Comment monter un dossier partagé VirtualBox au démarrage?

69

J'ai Ubuntu installé dans Virtualbox. Je veux monter mon dossier partagé VirtualBox dans Ubuntu automatiquement lorsque je me connecte à Ubuntu. Je mets la ligne suivante dans mes ~. / Bashrc et ~ / .bash_profile:

sudo mount -t vboxsf windows_share /media/windows_share

où windows_share est le nom que j'ai créé avec Virtualbox. Mais chaque fois que je démarre mon Ubuntu, il me demande de passer un mot de passe car il a besoin de sudo. Est-il possible de monter automatiquement le partage Windows sans saisir de mot de passe chaque fois que je me connecte?

    
posée tonga 08.02.2013 - 19:58
la source

6 réponses

88

Pour toujours monter un "dossier partagé" Virtual Box lors du démarrage d’un invité Ubuntu, nous avons deux options. Il est préférable de choisir celle qui convient le mieux à notre environnement.

1. Monter avec fstab

Pour monter un dossier partagé à l'aide du système de fichiers vboxsf fourni avec Ajouts d'invités Nous devons d'abord nous assurer que les conditions préalables sont rencontré Ensuite, nous pouvons mettre la ligne suivante dans notre fichier etc/fstab :

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

Remplacez name_of_share et /path/to/mountpoint par votre configuration individuelle (le répertoire du point de montage doit être créé en premier). Voir la page de manuel pour mount <options> . Une possibilité est de monter avec defaults ou de donner des options de montage spécifiques (par exemple, rw, suid, exec, auto, users ).

Sur certains systèmes, le module vboxsf noyau n’est pas encore chargé au moment où fstab est lu au démarrage. Il peut alors être utile d'ajouter le module du noyau vboxsf à /etc/modules .

Certains systèmes peuvent nécessiter l’option comment=systemd.automount dans leur entrée fstab ( source ).

2. Monter avec Virtual Box "montage automatique":

Dans les dernières versions de Virtual Box, nous pouvons également monter automatiquement des dossiers partagés lors de la création:

Après un redémarrage de l'invité, ce dossier partagé sera monté dans le répertoire invité /media/<username>/sf_<name_of_share> accessible à tous les utilisateurs devenus membres du groupe vboxsf .

    
réponse donnée Takkat 08.02.2013 - 20:29
la source
24
  1. Modifier /etc/rc.local

    sudo -H gedit /etc/rc.local
    
  2. Avant exit 0 type:

    mount.vboxsf windows_share /media/windows_share vboxsf
    
  3. Enregistrer

  4. (Facultatif) Créez un raccourci vers le bureau ou le dossier de base:

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

Pour démarrer sans erreur, par exemple en appuyant sur S pour ignorer le montage ou sur M pour réparer manuellement, vous devrez peut-être supprimer votre entrée dans fstab

    
réponse donnée Fred Collins 28.01.2015 - 00:07
la source
3

Après une matinée épuisante à essayer tout ce qui précède dans Ubutntu 16.04 fonctionnant dans Virtualbox 5.0.20 sans succès (particulièrement déçu que la solution rc.local n'ait pas fonctionné), cela a fonctionné en:

  1. Enregistrer depuis le menu Dossiers partagés de l’interface graphique de Virtualbox le répertoire requis, mais PAS le monter automatiquement ou le monter de manière permanente à partir de Virtualbox. Sinon, le répertoire hôte est monté par root et il est difficile d’accéder aux utilisateurs non root, même à partir du groupe admin.

  2. ajouter une entrée simple dans fstab:

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

    Remarque L'option noauto - sinon le chargeur de démarrage échoue comme cela a été noté.

  3. Ajoutez la ligne correspondante à /etc/sudoers comme suit en utilisant la commande visudo depuis l'OS invité:

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

Cela permettra aux processus non-root de les monter spécifiquement (car fstab ne peut pas monter avec l'option 'user' ...)

  1. Ajouter la ligne correspondante à .profile de l'utilisateur:

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

Maintenant, le sous-répertoire hôte sélectionné est prêt pour l'utilisateur sélectionné lors de la connexion!

    
réponse donnée Michael Moutoussis 04.06.2016 - 13:35
la source
3

J'ai essayé la solution rc.local mais je n'ai pas réussi à la faire fonctionner.
Cependant, j'ai découvert que le problème semble être lié au dossier à partir duquel vous exécutez la commande (aucune idée de la raison). J'ai donc ajouté une ligne pour changer le répertoire à mon dossier personnel avant la commande mount, et maintenant ça marche.

Donc, mon partage Windows s'appelle Dropbox , mon point de montage est /home/jamie/Dropbox , mon nom d'utilisateur est jamie , c'est ce que j'ai mis dans rc.local:

cd /home/jamie
mount.vboxsf /home/jamie/Dropbox Dropbox vboxsf
exit 0
    
réponse donnée DeepFried 17.12.2016 - 13:12
la source
2

Je le fais d'un mode très similaire à a été proposé ci-dessus mais ces scripts créent le requis et montent ou démontent le dossier partagé avec le script suivant:

#!/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

Enregistrez-le sous /opt/.scripts/VBoxShared.sh .

Assurez-vous que cela peut être exécuté. Sur le type de shell:

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

Maintenant, nous ajoutons une ligne qui exécute ce script sur rc.local :

sudo nano /etc/rc.local

et nous ajoutons ces lignes avant la dernière ligne ( exit 0 ):

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

Enregistrer ( Ctrl O ) et fermez-le ( Ctrl X )

À ce stade, nous montons automatiquement tous les dossiers partagés figurant sur <SharedFolder> au démarrage.

Pour le démonter, nous n’avons besoin que du type:

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

#!/bin/bash

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

exit 0

Enregistrer ( Ctrl O ) et fermer ( Ctrl X )

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

Et c'est tout!

    
réponse donnée U. Alonso 04.09.2015 - 09:41
la source
2

Voici une solution de travail.

En tant que root (I.E. sudo su) Allez dans le dossier home (cd ~) et créez un fichier cron:
vi cronjobs
Ajouter le code suivant @reboot dort 15; mount -t vboxsf app / mnt / app

Enregistrer le fichier

Remarque: remplacez app par votre nom de dossier partagé et / mnt / app où vous souhaitez le monter. Dans ce cas, j'ai créé l'application de dossier sous monture (application mkdir) en premier.

Pour activer votre cron en tant que root (pour le nom de fichier ci-dessus)
crontab cronjobs

Assurez-vous que cron est actif:
crontab -l

redémarrage et il sera monté. Un sommeil de 15 secondes laisse suffisamment de temps pour que tout soit prêt pour le montage.

    
réponse donnée Stephen 15.09.2017 - 15:44
la source

Lire d'autres questions sur les étiquettes