Как смонтировать общую папку VirtualBox при запуске?

65

У меня установлен Ubuntu в Virtualbox. Я хочу автоматически установить мою общую папку VirtualBox в Ubuntu при входе в Ubuntu. Я поместил следующую строку в свои файлы ~. / Bashrc и ~ / .bash_profile:

sudo mount -t vboxsf windows_share /media/windows_share

, где windows_share - это имя, которое я создал с помощью Virtualbox. Но каждый раз, когда я начинаю свой Ubuntu, он просит меня passwd, так как ему нужно sudo. Нужно ли вообще автоматически монтировать общий ресурс Windows без ввода пароля при каждом входе в систему?

    
задан tonga 08.02.2013 в 19:58
источник

6 ответов

81

Чтобы всегда монтировать виртуальную коробку "общая папка" при загрузке гостевой системы Ubuntu, у нас есть два варианта. Это зависит от личных предпочтений, которые лучше всего подходят для наших настроек.

1. Установить с помощью fstab

Чтобы подключить общую папку, используя файловую систему vboxsf , содержащую Guest Additions , мы сначала должны убедиться, что предварительные условия: встретились . Затем мы можем поместить следующую строку в наш файл etc/fstab :

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

Замените name_of_share и /path/to/mountpoint на вашу индивидуальную настройку (сначала нужно создать каталог для точки монтирования). См. Man-страницу для mount <options> . Одна из возможностей заключается в монтировании с defaults или для предоставления определенных параметров монтирования (например, rw, suid, exec, auto, users ).

В некоторых системах модуль ядра vboxsf еще не загружен в то время, когда fstab считывается при загрузке. Затем он может добавить модуль ядра vboxsf в /etc/modules .

Некоторым системам может понадобиться опция comment=systemd.automount в записи fstab ( источник ).

2. Монтаж с помощью виртуальной коробки "автоматический монтаж":

В последних выпусках Virtual Box мы также можем автоматически монтировать общие папки при создании:

После перезагрузки гостевой папки эта общая папка будет установлена ​​в гостевой каталог /media/<username>/sf_<name_of_share> , доступный всем пользователям, которые были внесены в группу vboxsf .

    
ответ дан Takkat 08.02.2013 в 20:29
источник
24
  1. Изменить /etc/rc.local

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

    mount.vboxsf windows_share /media/windows_share vboxsf
    
  3. <р> Сохранить

  4. (необязательно) Создайте ярлык для рабочего стола или домашней папки:

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

Для загрузки без ошибок, например, при нажатии S , чтобы пропустить mount или нажмите M , чтобы вручную восстановить, возможно, вам придется удалить свою запись в fstab

    
ответ дан Fred Collins 28.01.2015 в 00:07
3

После утомительного утреннего пробуждения все вышеперечисленное в Ubutntu 16.04, работающего в Virtualbox 5.0.20, безуспешно (особенно разочарован тем, что решение rc.local не работает), он работал с помощью:

  1. Регистрация из меню общих папок в Virtualbox GUI - это требуемый каталог, но НЕ автоматическая его или постоянная установка из Virtualbox. В противном случае хост-сервер монтируется с помощью root, и больно получить доступ к пользователям без полномочий root даже из группы admin.

  2. добавление простой записи в fstab:

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

    Примечание noauto option - иначе загрузчик завершится сбоем, как было отмечено.

  3. Добавьте соответствующую строку в /etc/sudoers следующим образом, используя команду visudo из гостевой ОС:

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

Это позволит не-root-процессам специально монтировать это (поскольку fstab не может монтироваться с опцией «user» ...)

  1. Добавьте соответствующую строку в .profile пользователя:

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

Теперь выбранный хост-субдир готов для выбранного пользователя при входе в систему!

    
ответ дан Michael Moutoussis 04.06.2016 в 13:35
2

Я делаю это очень похожего режима, как было предложено выше, но этот скрипт создает необходимый и монтирует или отключает общую папку со следующим скриптом:

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

Сохраните его как /opt/.scripts/VBoxShared.sh .

Убедитесь, что это можно запустить. Тип оболочки:

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

Теперь добавим строку, которая запускает этот скрипт на rc.local :

sudo nano /etc/rc.local

, и мы добавим эту строку перед последней строкой ( exit 0 ):

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

Сохранить ( Ctrl O ) и закрыть его ( Ctrl X )

В этот момент мы автоматически монтируем всю общую папку, указанную на <SharedFolder> при запуске.

Чтобы отключить его, нам нужен только тип:

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

#!/bin/bash

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

exit 0

Сохранить ( Ctrl O ) и закрыть ( Ctrl X )

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

И это все!

    
ответ дан U. Alonso 04.09.2015 в 09:41
2

Я попробовал решение rc.local, но не смог заставить его работать.
Однако я обнаружил, что проблема связана с папкой, в которой вы запускаете команду (не знаю почему). Поэтому я добавил строку для изменения каталога в свою домашнюю папку до команды mount, и теперь она работает.

Итак, мой общий ресурс Windows называется Dropbox , моя точка монтирования /home/jamie/Dropbox , мое имя пользователя jamie , это то, что я ввел в rc.local:

cd /home/jamie
mount.vboxsf /home/jamie/Dropbox Dropbox vboxsf
exit 0
    
ответ дан DeepFried 17.12.2016 в 13:12
1

Вот рабочее решение.

Как root (I.E. sudo su) Перейдите в домашнюю папку (cd ~) и создайте файл cron:
vi cronjobs
Добавьте следующее @reboot sleep 15; mount -t vboxsf app / mnt / app

Сохранить файл

Примечание. замените приложение на имя общей папки и / mnt / app, где вы хотите его установить. В этом случае я сначала создал приложение для папки под mount (приложение mkdir).

Чтобы включить cron как root (для указанного выше имени файла)
crontab cronjobs

Убедитесь, что cron активен:
crontab -l

перезагрузитесь, и он будет установлен. 15 секундный сон позволяет достаточно времени для того, чтобы все было готово к монтированию.

    
ответ дан Stephen 15.09.2017 в 15:44