lunedì 22 ottobre 2007

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

Vi ricordate? Nella 3a parte del post concludevo dicendo che in fondo non è necessario fare il l'auto-mount della cartella condivisa alla partenza del guest Linux, e per la verità è anche meglio non farlo per almeno 3 motivi:

- occorre modificare dei file di configurazione all'interno di Linux da cui è sempre meglio star lontani;
- condividiamo ogni volta una cartella che magari ci serve solo ogni tanto;
- se vogliamo condividere un'altra cartella occorre riandare a cercare quel file, modificare le indicazioni della cartella condivisa al suo interno, salvare, riavviare la macchina virtuale per caricare la nuova cartella condivisa.

Troppo macchinoso?!? Assolutamente! Esiste però un modo non solo più semplice di caricare la cartella condivisa, ma anche più elastico: può essere caricata o scaricata al volo senza riavviare la macchina, e solo quando effettivamente ci occorre. Useremo uno script, un semplice file di testo con all'interno i comandi che abbiamo dato a mano nella shell della 2a parte del post.

Lo faremo usando come esempio una Ubuntu, e per lavorare nella massima comodità, faremo altre 3 cose:

- monteremo la cartella condivisa direttamente in una cartella sul desktop, così da averla sempre immediatamente a disposizione senza dover vagare nel filesystem di Linux alla sua ricerca;
- creeremo un ulteriore script per smontare sempre al volo la cartella (unmount);
- creeremo un paio di pulsanti sul pannello di Gnome (l'interfaccia grafica di Ubuntu), quello in alto con sopra i vari menù di Ubuntu per intenderci, da cui avviare direttamente gli script.

Iniziamo creando la cartella sul desktop in cui montare la cartella condivisa: cliccate direttamente sul desktop con il tasto destro e poi su Crea cartella con il tasto sinistro (fig. 23), datele un nome, per esempio Cartella condivisa host, e salvatela.

Fig. 23 - Mount script - creazione cartella condivisa
fig. 23

E' il turno dei 2 file che conterranno gli script di mount e unmount (smontaggio) della cartella condivisa. Aprite l'Editor di testo (si tratta di gedit, fig. 24),

Fig. 24 - Mount script - apertura editor testo
fig. 24


e al suo interno scrivete le 2 seguenti righe (fig. 25):

#!/bin/bash
sudo mount -t vboxsf 'Cartella condivisa host' /home/nomeutente/Desktop/'Cartella condivisa host'


Poi salvate il tutto nella vostra home con il nome mountcc (senza tanta fantasia, sta per Mount Cartella Condivisa); di default l'editor si dovrebbe essere aperto proprio al suo interno. Verificate comunque, alla voce Salva nella cartella di fig. 25 deve esserci il vostro nome utente.

Fig. 25 - Mount script - creazione script
fig. 25


Create un secondo documento nell'editor, inserite le 2 righe sotto,

#!/bin/bash
sudo umount 'Cartella condivisa host'


e salvate il documento sempre nella vosta home con il nome di umountcc. Vediamo un attimo cosa abbiamo scritto. La prima riga in comune ad entrambi gli script, #!/bin/bash, avvisa il sistema che:

- (#!) tutto quanto segue è un script di shell (o terminale che dir si voglia, ma d'ora in poi diremo shell);
- la shell da eseguire si trova nella directory /bin in un file che si chiama shell;

La seconda riga invece chiama con i privilegi di amministratore (sudo):

- il comando di mount (spiegato nella parte iniziale della 2a parte del post) nel primo script per montare la cartella condivisa,
-il comando di umount (senza la n) per smontare la cartella condivisa.

Il motivo per cui vi ho chiesto di salvarli nella vostra home è presto detto: quando aprite la finestra di terminale che fra poco useremo, questa di default si apre proprio sulla vostra home. In questo modo potrete semplicemente aprire il terminale e dare subito i comandi mountcc e umountcc senza doverli andare a cercare da qualche parte.

Bene, gli script sono creati, ma i file che li contengono, così come sono verrebbero letti come normali file di testo; dobbiamo renderli eseguibili. Aprite il terminale (guardate fig. 24, è l'ultima voce del menù) e date il comando ls (LiSt, analogo a dir per Windows) per vedere il contenuto della vostra home: eccoli lì i 2 file di script, mountcc e umountcc (fig. 26). Sempre nella finestra di terminale date i comandi:

chmod +x mountcc
chmod +x umountcc


Se tutto è andato bene, il comando vi restituirà ogni volta semplicemente il prompt mentre entrambi i file sono diventati eseguibili.

Fig. 26 - Mount script - assegnazione permessi esecuzione
fig. 26


Proviamo i due script. Dall'interno del terminale date il comando ./mountcc: dopo aver dato la password da amministratore, andate a dare un'occhiata in Cartella condivisa host sul desktop: et voilà! Il contenuto della cartella condivisa sull'host ora è visibile direttamente sul desktop di Linux. :-D

Vi piace? Sii?!? Ma non abbiamo mica finito qua. Sempre nel terminale, ora date il comando ./umountcc: la cartella condivisa così viene smontata, ed il suo contenuto scompare. ;-)

Bene, constatato che gli script funzionano, diamo un tocco di eleganza al tutto: niente lancio a mano degli script (cosa comunque sempre possibile nel modo che abbiamo visto), ma due bei pulsanti su cui cliccare per lanciarli.

Cliccate con il tasto destro sul pannello di Gnome (fig. 27) e poi con il sinistro sulla voce Aggiungi al pannello:

Fig. 27 - Mount script - aggiungi elemento sul pannello
fig. 27


Nella finestra che si è aperta, cliccate su Icona avvio applicazioni personalizzata (fig. 28).

Fig. 28 - Mount script - crea nuova icona sul pannello
fig. 28


Fate le opportune selezioni e riempite i vari campi in modo tale da ottenere un risultato analogo a fig. 29; in particolare nel campo Comando, tramite il tasto accanto Esplora, cercate e selezionate lo script mountcc. Cliccate anche su Nessuna icona se volete associare al vostro pulsante una icona, quando avete finito su OK per terminare.

Fig. 29 - Mount script - informazioni creazione nuova icona sul pannello
fig. 29


Ed eccola, sul vostro pannello (fig. 30) è comparsa l'icona del pulsante da cui lanciare la script di mount della cartella condivisa. Ripetete tutti i passaggi per creare un analogo pulsante di lancio dello script di unmount.

Fig. 30 - Mount script - icone avvio script disponibili sul pannello
fig. 30


A questo punto non vi resta che provarli. Aprite Cartella condivisa host sul desktop e cliccate sul pulsante di mount: si aprirà la finestra di terminale dove inserire la password da amministratore (le operazioni di mount e unmount sono operazioni riservate all'amministratore se non diversamente specificato). Inserita e dato invio, vedrete comparire in tempo reale il contenuto della cartella condivisa sull'host. Cliccando sull'altro pulsante e data la password se richiesta, vedrete scomparire davanti ai vostri occhi il contenuto della cartella condivisa.

Bene, e con questo credo abbiamo finito anche l'argomento cartelle condivise. In una mia riflessione "sotto la doccia" qualche post addietro, descrivevo la virtualizzazione come un ponte fra sistemi operativi, e più in generale fra idee, concezioni, modi di essere, in definitiva fra persone. Vedo le cartelle condivise come l'esemplificazione pratica e immediata in VirtualBox di questo ponte.

E allora, buona condivisione a tutti! :-D
@:\>

19 commenti:

  1. Ciao Michele,
    sempre in merito alla condivisione delle cartelle in una macchina Guest con installato Ubuntu 7.10, ho provato la modalità di mount tramite script che hai descritto nel post, funziona in parte: quando la smonti (anche se hai appena montato la condivisione senza neanche usarla) di fatto non fa nulla perche (se esegui poi il comando dal terminal) il sistema avverte che è in uso (ma da chi?). Ma a parte questo, quello che ho verificato che si condividi la cartella poi non puoi scriverci con la utenza normale ma solo tramite il comando sudo (quindi con root). La copia è peraltro lentissima, ma funziona. Non sono pratico di Linux ma smanettando o verificato che, nonostante la cartella sul desktop l'ho creata con il mio account "normale" e prima di montarci la cartella condivisa ci posso scrivere, dopo aver eseguito il mount non mi ci fa più scrivere.
    Ti ringrazio cmq per tutti i consigli che hai rappresentato che sono stati utilissimi.
    Augusto

    RispondiElimina
  2. Ciao Augusto, ti rispondo io, Giornale di Sistema. ;-)
    Intanto chiedo venia a te e tutti gli altri lettori. Ora ho corretto, ma prima nel testo compreso fra fig. 24 e fig. 25, ho indicato come seconda riga dello script mountcc, le seguenti istruzioni:
    sudo mount -t vboxsf 'Cartella condivisa host' /home/nomeutente/'Cartella condivisa host'
    La riga corretta invece è:
    sudo mount -t vboxsf 'Cartella condivisa host' /home/nomeutente/Desktop/'Cartella condivisa host'
    con l'aggiunta di Desktop; fate inoltre attenzione con Ubuntu 7.10, Desktop è stato tradotto con Scrivania.
    Augusto, tornando a quanto mi dicevi: mi spiace, ma non sono riuscito a replicare il problema. Sia da terminale che da icona sul pannello, gli script funzionano regolarmente, ed anche la velocità di copia mi sembra normale: 10 GB in un quarto d'ora circa. Fai una cosa: apri la shell (terminale) e fammi avere in un prossimo commento il risultato dei comandi:
    ls -l
    cd Scrivania
    ls -l
    vediamo se c'è qualcosa che non va nei permessi.

    @:\>

    RispondiElimina
  3. Ciao Giornale di Sistema,
    ti ringrazio innanzitutto per l'attenzione...
    dunque ho fatto quello che mi hai suggerito ed ecco i risultati delle protezioni della cartella 'Dati Condivisi' prima:

    auceto@Ubuntu-VirtualBox:~/Scrivania$ ls -l
    totale 36
    drwxr-xr-x 2 auceto auceto 4096 2007-10-25 11:59 Dati Condivisi
    -rw-r--r-- 1 auceto auceto 5196 2007-09-18 12:28 gnome-terminal.desktop
    -rw-r--r-- 1 auceto auceto 8614 2007-10-08 20:53 nautilus-computer.desktop
    -rw-r--r-- 1 auceto auceto 7062 2007-10-08 20:53 network-scheme.desktop
    -rw-r--r-- 1 auceto auceto 0 2007-10-24 19:16 nuovo file~
    -rw-r--r-- 1 auceto auceto 6 2007-10-24 19:16 prova.txt
    -rw-r--r-- 1 auceto auceto 0 2007-10-24 15:19 prova.txt~

    e dopo il montaggio (con il comando sudo mount -t vboxsf host '/home/auceto/Scrivania/Dati Condivisi'):

    auceto@Ubuntu-VirtualBox:~/Scrivania$ ls -l
    totale 32
    drwxrwxrwx 1 root root 0 2007-10-25 22:16 Dati Condivisi
    -rw-r--r-- 1 auceto auceto 5196 2007-09-18 12:28 gnome-terminal.desktop
    -rw-r--r-- 1 auceto auceto 8614 2007-10-08 20:53 nautilus-computer.desktop
    -rw-r--r-- 1 auceto auceto 7062 2007-10-08 20:53 network-scheme.desktop
    -rw-r--r-- 1 auceto auceto 0 2007-10-24 19:16 nuovo file~
    -rw-r--r-- 1 auceto auceto 6 2007-10-24 19:16 prova.txt
    -rw-r--r-- 1 auceto auceto 0 2007-10-24 15:19 prova.txt~

    Se la smonto ovviamente torna come sopra.
    Mi sembra di capire che è come se il comando mount facesse divenire proprietario della cartella root (e infatti posso fare un file copy con sudo). Dov'è l'arcano?

    Augusto

    RispondiElimina
  4. Ciao Augusto. Il tempo di verificare e ti faccio sapere.

    @:\>

    RispondiElimina
  5. Ciao Augusto.
    Fammi avere anche il risultato del primo comando ls -l, appena entrato nella shell e prima di dare il comando cd Scrivania; per ora i permessi sono corretti.
    Ho fatto anche tutte le verifiche che mi sono venute in mente: ho provato a montare la cartella a guest spento, guest acceso, come cartella permanente e transiente, ma niente, la condivisione cartelle continua a funziona regolarmente; mi resta un solo dubbio da verificare con il risultato del primo comando ls -l che ti dicevo.
    Fatto questo, se tutto è a posto non so davvero che dire. Non resta che reinstallare la distribuzione, ho letto in giro per il web di un pò di problemi di gioventù di Ubuntu 7.10, non dovrebbe trattarsi di questo ma tentar non nuoce, oppure installare la 7.04 che ormai di problemi di gioventù non dovrebbe più averne. ;-)

    Fammi sapere.
    @:\>

    RispondiElimina
  6. Ciao Giornale di sistema,

    ecco il risultato che mi hai chiesto:

    auceto@Ubuntu-VirtualBox:~$ ls -l
    totale 52
    drwxr-xr-x 2 auceto auceto 4096 2007-10-24 15:01 Documenti
    drwxr-xr-x 2 auceto auceto 4096 2007-10-27 15:25 Download
    lrwxrwxrwx 1 auceto auceto 26 2007-10-19 11:51 Examples -> /usr/share/example-content
    drwx------ 3 auceto auceto 4096 2007-10-24 12:01 file:
    drwxr-xr-x 2 auceto auceto 4096 2007-10-22 11:35 Immagini
    drwxr-xr-x 2 auceto auceto 4096 2007-10-19 12:35 Modelli
    -rwxr-xr-x 1 auceto auceto 130 2007-10-25 11:52 mountSF
    -rw-r--r-- 1 auceto auceto 124 2007-10-24 14:34 mountSF~
    drwxr-xr-x 2 auceto auceto 4096 2007-10-19 12:35 Musica
    drwxr-xr-x 2 auceto auceto 4096 2007-10-19 12:35 Pubblici
    drwxr-xr-x 3 auceto auceto 4096 2007-10-26 17:39 Scrivania
    -rwxr-xr-x 1 auceto auceto 109 2007-10-24 14:35 umountSF
    -rw-r--r-- 1 auceto auceto 94 2007-10-24 13:51 unmountSF~
    drwxr-xr-x 2 auceto auceto 4096 2007-10-19 12:35 Video
    auceto@Ubuntu-VirtualBox:~$

    io non vedo nulla di strano rispetto a quelli precedenti. Cmq questo problema me lo dava anche la versione precedente di Ubuntu tan'è che ho installato questa pensando che lo potesse risolvere. Inoltre ho installato Mandriva 2008 e anche questo non si comporta in modo pulito: mi da l'errore "Impossibile cambiare i diritti di accesso al file" quando ha copiato il file, il file però lo copia cmq e dalla macchina host lo leggo normalmente. Mi viene in mente che sia un problema legato al file system vboxsf? Grazie comunque per l'interessamento.
    Augusto

    RispondiElimina
  7. Si, a livello di permessi mi pare effettivamente tutto a posto. A questo punto e visti anche i pregressi, sia tuoi che miei, si, viene anche a me da pensare che il problema sia in VirtualBox stesso. Personalmente con guest Linux non sono mai riuscito ad usare dischi virtuali a dimensione fissa... forse è per questo che mi sto dando tanto da fare con quelli ad espansione dinamica! ;-)

    Dato però che sono convinto solo al 99,999999999999999 per cento, se hai ancora voglia, prova a fare il mount in questo modo:

    sudo mount -t vboxsf -o uid=auceto,gid=auceto,rw host /home/auceto/Scrivania/'Dati Condivisi'

    oppure in questa versione leggermente diversa che fa la stessa cosa:

    sudo mount -t vboxsf -o uid=1000,gid=100,rw host /home/auceto/Scrivania/'Dati Condivisi'

    @:\>

    RispondiElimina
  8. Ciao Giornale di sistema,

    ...purtroppo ancora non funzia neanche con i tuoi consigli...voglio precisare che anch'io ho utilizzato un disco dinamico e che sto provando a reinstallarlo daccapo per vedere se è andato storto qualcosa visto che questa installazione l'ho fatta sopra Ubuntu old ma non facendo l'upgrade (non mi è riuscito) ma semplicemente reinstallandolo sopra; non vorrei che questo abbia cmq causato qualcosa di anomalo. Purtroppo ora quando vado ad installare (su un nuovo disco) mi si pianta a 82% e non schioda. Ti farò sapere appena ci riesco.
    Grazie

    Augusto

    RispondiElimina
  9. Ok, resto in attesa di notizie. Grazie a te. :-)

    @:\>

    RispondiElimina
  10. Ciao Giornale di sistema,
    ...allora in merito al problema della condivisione delle cartelle il problema si è risolto con la nuova installazione; probabilmente installando sul vecchio disco qualcosa era andato storto. Per installarlo di nuovo, però, sono diventato pazzo...e ho alcuni tips per la soluzione di alcuni problemi della fase di installazione che potrebbero essere messi nel post giusto così per far faticare di meno i posteri. Dunque in merito al noto problema della risoluzione video, le tecniche che sonon state esposte nei precedenti post non hanno funzionato per la mia macchina quindi ho escogitato un trucchetto banale: ho spostato i panel a destra e sinitra del desktop e questo consente di vedere i pulsanti quel tanto che basta per usarli. Inoltre mi sono imbattuto (come ti accennavo nel post precedente) nel problema del mirror:l'installazione cerca di connettersi probabilmente alla rete per qualche aggiornamento e se la connessione a internet della host non c'è oppure qualcosa ancora non va, bene li rimane (all'82%). Per risolverlo basta disconnettere la rete (durante la fase di installazione quando è bloccato), l'installer va in errore (ovviamente) e poi prosegue normalmente.
    Spero che questa "avventura" sia utile a qualcuno e resto in attesa di post sull'utilizzo della rete Host che consentirebbe, tramite un bridge, di utilizzare la connessione internet e vedere la macchina host avendo a disposizione l'intero disco. Io intanto provo...

    Grazie

    Augusto

    RispondiElimina
  11. Ciao Augusto. E finalmente è fatta!:-D

    E come sempre, ed ancora una volta, ha funzionato la famosa legge zero dell'informatica: spegni e riaccendi, nella sua più comune variante "arare via tutto e reinstallare da zero". ;-D

    Mea culpa: non si era accesa la lucina leggendo che l'installazione si bloccava all'82%. E' il numero fatidico a cui l'installazione di Ubuntu in realtà non si blocca ma cerca la rete per scaricare aggiornamenti vari ed i package per la lingua italiana.
    Se appunto come dicevi per qualche problema non la trova, resta lì lungamente in attesa (anche 20 minuti) prima di rinunciare allo scarico dei package e proseguire.

    Volentieri metto i tuoi suggerimenti in un post così da dargli più risalto e utilità, grazie! :-)

    @:\>

    RispondiElimina
  12. Ciao innanzi tutto complimenti per il blog, davvero bello ^^
    Volevo chiederti un chiarimento. Se non ho capito male posso copiare i file della cartella condivisa nel guest, ma posso copiare i file che creo nel guest all'interno della cartella condivisa? Te lo chiedo perchè non ci riesco anche modificando i permessi da terminale...
    Grazie mille, ciao ^^

    RispondiElimina
  13. Ciao, mi son scordato di dirti che il sistema guest è ubuntu e l'host kubuntu. Provando ho visto che digitando da terminale "sudo cp fileguest cartellacondivisa" mi copia il file correttamente. Controllando i file all'interno della cartella condivisa ho infatti visto che sono tutti di proprietà del root anche se la suddetta cartella è proprietà dell user. Ho provato a cambiare i permessi ma non risponde al comando... come potrei fare? Grazie e scusa il doppio post

    RispondiElimina
  14. Ciao x_x! :-)
    Spero nel frattempo tu abbia già risolto quello che sembra un problema di permessi. Prova a verificare: il tuo user fa parte del gruppo vboxusers? Se non lo è, aggiungilo, è fondamentale per poter fare queste operazioni fra host e guest Linux.

    Ciao ciao.
    @:\>

    RispondiElimina
  15. Ciao, grazie mille ^^
    Ho controllato ed effettivamente non avevo messo il mio user nel gruppo vbox ^^'
    Ancora grazie, adesso va tutto benissimo :)

    RispondiElimina
  16. E di niente, figurati... sono contento tu abbia risolto. :)

    @:\>

    RispondiElimina
  17. va tutto bene tranne quando do l'ultimo comando. Cosa devo fare.

    davide@davide-desktop:~$ ./mountcc
    /sbin/mount.vboxsf: mounting failed with the error: No such file or directory
    davide@davide-desktop:~$


    grazie mille

    RispondiElimina
  18. GRAZIEEEE!!! Sei un dio! La tua guida mi ha salvato la vita. Grazie!

    RispondiElimina
  19. Così arrossisco... grazie a te. :)

    RispondiElimina

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