99 votes

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

J'ai installé Ubuntu dans Virtualbox. Je veux monter mon dossier partagé VirtualBox dans Ubuntu automatiquement lorsque je me connecte à Ubuntu. J'ai mis la ligne suivante dans mon ~./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 le mot de passe car il a besoin de sudo. Existe-t-il un moyen de monter automatiquement le partage Windows sans entrer le mot de passe à chaque fois que je me connecte ?

2voto

Banny Points 21

Je le fais d'un mode très similaire à celui proposé ci-dessus mais ces script créent le nécessaire et montent ou démontent le dossier partagé avec les script suivants :

#!/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 "$@"; 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 Shell tapez :

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

Maintenant, on ajoute 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> ...]

Sauvegarder ( CtrlO ) et le fermer ( CtrlX )

A ce stade, nous montons automatiquement tous les dossiers partagés listés dans la section <SharedFolder> au démarrage.

Pour le démonter, nous avons seulement besoin du type :

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

#!/bin/bash

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

exit 0

Sauvegarder ( CtrlO ) et fermer ( CtrlX )

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

Et c'est tout !

2voto

Stephen Points 21

Voici une solution qui fonctionne.

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

Sauvegarder le fichier

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

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

Assurez-vous que le cron est actif :
crontab -l

redémarrez et il sera monté. Une mise en veille de 15 secondes laisse suffisamment de temps pour que tout soit prêt pour le montage.

1voto

Farshid Points 249

(Dans mon cas, mon système d'exploitation hôte est Mac OS X et mon système d'exploitation invité est ubuntu).

Aucune des solutions ci-dessus, et les solutions mentionnées iciici a fonctionné pour moi. Il y avait un problème avec chacun d'entre eux.

Voici ce que j'ai finalement fait pour résoudre le problème :

1- J'ai créé un dossier partagé dans l'interface de VirtualBox, pointant vers un dossier nommé VMShares dans mon Mac OS, en le nommant wd

2- Puis j'ai installé les outils Ubuntu Guest Addition (redémarrage nécessaire)

3- Puis j'ai créé un dossier dans mon OS invité comme point de montage (dans mon cas le nom était /home/fashid/host )

4- Puis j'ai couru :

sudo VBoxControl sharedfolder list

Cette commande permet de s'assurer que le partage est disponible pour le système d'exploitation invité, mais vous devez encore le monter dans votre système d'exploitation invité pour le rendre réellement disponible.

Il affichera quelque chose comme :

Shared Folder mappings (1):
01 - VMShares

C'est le truc ! Il montre le nom réel que vous devez mettre dans la commande ci-dessous pour le monter et le rendre disponible dans votre OS invité :

sudo mount -t vboxsf VMShares /home/farshid/myshares

Tu as compris le message ? Je n'ai utilisé wd nulle part par la suite. A l'étape 3, j'avais besoin de récupérer le nom réel du dossier (hôte) au lieu du nom arbitraire que j'avais attribué dans la boîte de dialogue GUI.

Grâce aux étapes ci-dessus, mon problème a été résolu.

0voto

Mike Robinson Points 199

J'ai récemment rencontré ce fil de discussion lorsque, après avoir effectué la mise à jour vers Ubuntu LTS-18 (et sans faire aucun changement à VirtualBox, et après avoir réinstallé les extensions et bla-bla-bla), Le montage automatique a cessé de fonctionner. Le site sf_xxx étaient présents dans /media/ mais aucun d'entre eux n'a été réellement monté.

Les tentatives de les monter en /etc/fstab (comme suggéré par la documentation de VirtualBox) n'a pas fonctionné : le démarrage a échoué en "mode d'urgence", même si j'avais modifié le fichier /etc/modules fichier.

Quoi a fait travail final - bien que je le considère comme un pirate puant - est la crontab l'astuce décrite ci-dessus.

A ce jour, je n'ai aucune idée de "ce qui a cassé".

0voto

Cranky Points 394

J'avais un problème où je pouvais voir le dossier partagé, mais il n'y avait aucun fichier dedans. J'ai donc fait un hack similaire à ce qui est montré ci-dessus :

Je me suis assuré que mon utilisateur était dans le(s) bon(s) groupe(s), et qu'il y avait une entrée dans fstab pour monter le partage, et que les permissions étaient correctement définies, et que le montage automatique était activé dans les paramètres de VirtualBox, mais toujours aucun fichier à voir.
J'ai donc ouvert l'application Startup Applications dans l'interface graphique d'Ubuntu 18.04 et créé une tâche qui exécute simplement "sudo mount -a" au démarrage. Pour une raison quelconque, le dossier partagé n'a pas été monté correctement lorsque fstab a été automatiquement analysé au démarrage, de sorte que le remontage de tout semble résoudre le problème. Maintenant, je peux voir les fichiers dans le partage.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X