Come montare una cartella condivisa di VirtualBox all'avvio?

69

Ho installato Ubuntu in Virtualbox. Voglio installare automaticamente la mia cartella condivisa VirtualBox in Ubuntu quando accedo ad Ubuntu. Ho inserito la seguente riga nel mio ~. / Bashrc e ~ / .bash_profile:

sudo mount -t vboxsf windows_share /media/windows_share

dove windows_share è il nome che ho creato con Virtualbox. Ma ogni volta che avvio la mia Ubuntu, mi chiede passwd poiché ha bisogno di sudo. È comunque possibile montare automaticamente la condivisione di Windows senza immettere la password ogni volta che accedo?

    
posta tonga 08.02.2013 - 19:58

7 risposte

88

Per montare sempre una "cartella condivisa" della Virtual Box all'avvio di un guest Ubuntu abbiamo due opzioni. Spetta alle preferenze personali quale opzione funzioni meglio nelle nostre impostazioni.

1. Monta con fstab

Per montare una cartella condivisa usando il filesystem vboxsf fornito con Guest Additions per prima cosa dobbiamo assicurarci che i i prerequisiti siano incontrato . Quindi potremmo inserire la seguente riga nel nostro file etc/fstab :

<name_of_share>   /path/to/mountpoint   vboxsf   <options>  0   0

Sostituisci name_of_share e /path/to/mountpoint con il tuo setup individuale (la directory per il mountpoint deve essere creata per prima). Vedi la manpage per mount <options> . Una possibilità è montare con defaults , o per dare specifiche opzioni di montaggio (ad esempio rw, suid, exec, auto, users ).

Su alcuni sistemi il modulo del kernel vboxsf non è ancora stato caricato al momento in cui fstab viene letto all'avvio. Potrebbe quindi essere utile aggiungere il modulo del kernel vboxsf a /etc/modules .

Alcuni sistemi potrebbero aver bisogno dell'opzione comment=systemd.automount nella loro voce fstab ( fonte ).

2. Montare con Virtual Box "montaggio automatico":

Nelle versioni recenti di Virtual Box possiamo anche montare automaticamente le cartelle condivise durante la creazione:

Dopo il riavvio del guest questa cartella condivisa verrà montata nella directory guest /media/<username>/sf_<name_of_share> accessibile a tutti gli utenti che sono stati resi membri del gruppo vboxsf .

    
risposta data Takkat 08.02.2013 - 20:29
24
  1. Modifica /etc/rc.local

    sudo -H gedit /etc/rc.local
    
  2. Prima del tipo exit 0 :

    mount.vboxsf windows_share /media/windows_share vboxsf
    
  3. Salva

  4. (Opzionale) Crea un collegamento al desktop o alla cartella home:

    ln -s /media/windows_share /home/freddy/Desktop
    

Per avviare senza errori come premere S per saltare il montaggio o premere M per riparare manualmente potresti dover eliminare la voce in fstab

    
risposta data Fred Collins 28.01.2015 - 00:07
3

Dopo una mattinata stancante che ha provato tutto quanto sopra in Ubutntu 16.04 eseguito in Virtualbox 5.0.20 senza successo (particolarmente deluso dal fatto che la soluzione rc.local non funzionasse), funzionava per:

  1. Registrazione dal menu Cartelle condivise della GUI di Virtualbox nella directory richiesta ma NON automount o montaggio permanente da Virtualbox. In caso contrario, la directory host viene montata da root ed è difficile accedere agli utenti non root anche dal gruppo admin.

  2. aggiunta di una semplice voce in fstab:

    [VirtuablBoxNameOfMount] /media/[guestOSuser]/[mountSubdir]    vboxsf   rw, noauto   0     1
    

    Nota noauto opzione - altrimenti il ​​boot loader fallisce come è stato notato

  3. Aggiungi la riga corrispondente a /etc/sudoers come segue usando il comando visudo dal sistema operativo guest:

    ALL ALL = NOPASSWD: /bin/mount /media/[guestOSuser]/[mountSubdir]/
    

Ciò consentirà ai processi non-root di montarlo in modo specifico (poiché fstab non può essere montato con l'opzione 'utente' ...)

  1. Aggiungi la riga corrispondente a .profile dell'utente:

    sudo mount /media/[guestOSuser]/[mountSubdir]/
    

Ora il subdir host selezionato è pronto per l'utente selezionato al momento del login!

    
risposta data Michael Moutoussis 04.06.2016 - 13:35
3

Ho provato la soluzione rc.local ma non ho potuto farla funzionare.
Tuttavia ho scoperto che il problema sembra essere correlato alla cartella da cui viene eseguito il comando (non so perché). Così ho aggiunto una riga per cambiare la directory nella mia cartella home prima del comando mount, e ora funziona.

Quindi, la mia condivisione di Windows si chiama Dropbox , il mio mountpoint è /home/jamie/Dropbox , il mio nome utente è jamie , questo è quello che ho inserito in rc.local:

cd /home/jamie
mount.vboxsf /home/jamie/Dropbox Dropbox vboxsf
exit 0
    
risposta data DeepFried 17.12.2016 - 13:12
2

Lo faccio in una modalità molto simile a quella proposta sopra ma questi script creano il necessario e montano o smontano la cartella condivisa con il seguente script:

#!/bin/bash
#
# Mount automatically even shared folder on startup and unmount it at shutdown.
#
# VirtualBox (c) 2015 by Oracle Systems Inc.
#
####

# Check user privileges.
if [[ $EUID -ne 0 ]]; then
    echo -e "This script must run at ROOT user!" \
        "\nPlease, use 'sudo', 'visudo' or any other to run it."
    exit 1
fi

# Check paramas from caller.
if [[ $# -eq 0 ]]; then
    echo -e "Auto-Mount selected shared folder of VirtualBox machine." \
        "\nUsage:" \
        "\n    VBoxShared <drive_one> <drive_two> <...>"
    exit 2
fi

declare EVENT=          # This set the ACTION: -m OR -u
declare -a DRIVES=()

# Processing each param:
for arg in "[email protected]"; do
    case "$arg" in
        "-m"|"--mount")
            if [[ -z ${EVENT} ]]; then
                EVENT=-m
            else
                exit 318        # parameters at conflict!
            fi
            ;;

        "-u"|"--umount")
            if [[ -z ${EVENT} ]]; then
                EVENT=-u
            else
                exit 318        # parameters at conflict!
            fi
            ;;

        *)
            DRIVES=("${DRIVES[@]}" "${arg}")
            ;;
    esac
done
unset arg

[[ -z ${EVENT} ]] && exit 1             # ERROR: No se ha establecido la acción a realizar.
[[ "${#DRIVES[@]}" -gt 0 ]] || exit 1   # ERROR: No se han indicado las unidades a manejar.

# Process each shared folder stored on '${DRIVES}' array
for drive in "${DRIVES[@]}"; do
    DEST="/media/sf_${drive}"

    case "${EVENT}" in
        "-m")
            [[ -d ${DEST} ]] || (mkdir ${DEST} && chown root:vboxsf ${DEST} && chmod 770 ${DEST})
            mount -t vboxsf ${drive} ${DEST}
            ;;

        "-u")
            if [[ 'df --output=target | grep "${DEST}"' > /dev/null ]]; then
                umount -f ${DEST}
                rm -rf "${DEST}"
            fi
            ;;
    esac
    unset DEST
done
unset drive

unset EVENT
unset DRIVES
exit 0

Salva come /opt/.scripts/VBoxShared.sh .

Assicurati che questo possa essere eseguito. Sul tipo di shell:

sudo chmod a+x /opt/.scripts/VBoxShared.sh

Ora aggiungiamo una riga che esegue questo script su rc.local :

sudo nano /etc/rc.local

e aggiungiamo questa riga prima dell'ultima riga ( exit 0 ):

. /opt/.scripts/VBoxShared.sh --mount <SharedFolder1> [<SharedFolder2> <SharedFolder3> ...]

Salva ( Ctrl O ) e chiudilo ( Ctrl X )

A questo punto, montiamo automaticamente tutte le cartelle condivise elencate su <SharedFolder> all'avvio.

Per smontarlo, abbiamo solo bisogno di tipo:

sudo nano /etc/rc6.d/K99-vboxsf-umount.sh

#!/bin/bash

. /opt/.scripts/VBoxShared --umount <SharedFolder1> [<SharedFolder2> <SharedFolder3> ...]

exit 0

Salva ( Ctrl O ) e chiudi ( Ctrl X )

sudo chmod a+x /etc/rc6.d/K99-vboxsf-auto.sh

E questo è tutto!

    
risposta data U. Alonso 04.09.2015 - 09:41
2

Ecco una soluzione funzionante.

Come root (I.E. sudo su) Vai alla cartella home (cd ~) e crea un file cron:
vi cronjobs
Aggiungi il seguente testo @reboot sleep 15; mount -t vboxsf app / mnt / app

Salva file

Nota: sostituire l'app con il nome della cartella condivisa e / mnt / app in cui si desidera montarlo. In questo caso ho creato l'app per le cartelle sotto mount (mkdir app).

Per abilitare il cron come root (per il nome file sopra)
crontab cronjobs

Assicurati che cron sia attivo:
crontab -l

riavvia e verrà montato. 15 secondi di sonno concedono abbastanza tempo perché tutto sia pronto per il montaggio.

    
risposta data Stephen 15.09.2017 - 15:44
0

Recentemente ho incontrato questo thread quando, dopo l'aggiornamento a Ubuntu LTS-18 (e senza apportare alcuna modifica a VirtualBox, e dopo aver reinstallato le estensioni e blah-de-blah), il montaggio automatico si è fermato lavoro. Le directory sf_xxx erano presenti in /media/ , ma nessuna era effettivamente montata.

I tentativi di montarli in /etc/fstab (come suggerito dalla documentazione di VirtualBox) non hanno funzionato: l'avvio non è riuscito in "modalità emergenza", anche quando avevo modificato il file /etc/modules .

Che cosa ha alla fine funziona, anche se lo considero un trucco per stinkin: è il trucco crontab descritto sopra.

Fino ad oggi, non ho idea di cosa si sia rotto.

    
risposta data Mike Robinson 22.08.2018 - 19:12

Leggi altre domande sui tag