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

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

sudo mount -t vboxsf windows_share /media/windows_share

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

99
задан 9 February 2013 в 01:22

11 ответов

Ubuntu коногун жүктөөдө ар дайым Виртуалдык Кутуну "жалпы папканы" орнотуу үчүн бизде эки жол бар. Биздин тандоодо кайсы вариант мыкты иштей тургандыгы жеке тандоого байланыштуу.

1. Fstab менен орнотуу

Бөлүшүлгөн папканы vboxsf файл тутумун Коноктор кошумчалары менен камсыз кылуу үчүн, алгач милдеттүү шарттардын аткарылгандыгын текшеришибиз керек . Андан кийин etc / fstab файлына төмөнкү сапты койсок болот:

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

Өзүңүздүн жеке орнотууңуз менен name_of_share жана / path / to / mountpoint менен алмаштырыңыз. алгач mountpoint үчүн каталог түзүлүшү керек). Монтаж үчүн manpage караңыз . Мүмкүнчүлүктөрдүн бири - демейки менен орнотуу , же орнотуунун белгилүү бир параметрлерин берүү (мисалы rw, suid, exec, auto, колдонуучулар ).

Айрым системаларда vboxsf учурда ядро ​​модулу жүктөлө элек fstab жүктөөдө окулганда. Андан кийин vboxsf ядро ​​модулун / etc / modules тиркөөгө жардам берет.

Айрым системаларга comment = systemd.automount опциясы керек болот, алардын fstabында кириш ( булак ).

2. Виртуалдык куту менен орнотуу "автоматтык монтаждоо":

Виртуалдык Бокстун акыркы чыгарылыштарында жалпы папкаларды түзүүдө автоматтык түрдө орното алабыз:

enter image description here

Конок кайра жүктөлгөндөн кийин, бул бөлүшүлгөн папка коноктор каталогуна орнотулат / media / / sf_ топтун мүчөсү болгон бардык колдонуучуларга жеткиликтүү vboxsf .

119
ответ дан 9 February 2013 в 01:22
  1. Изменить /etc/rc.local

     sudo -H gedit /etc/rc.local
     
  2. Перед exit 0 введите:

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

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

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

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

27
ответ дан 9 February 2013 в 01:22

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

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

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

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

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

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

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

Это позволит некорневым процессам специально монтировать это (поскольку fstab не может монтировать с опцией 'user' ...)

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

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

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

6
ответ дан 9 February 2013 в 01:22

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

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

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

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

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

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

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

2
ответ дан 9 February 2013 в 01:22

Би rc.local шийдлийг туршиж үзсэн боловч ажиллуулж чадсангүй.
Гэсэн хэдий ч би энэ асуудлыг олж мэдсэн нь таны тушаалыг ажиллуулдаг хавтастай холбоотой юм шиг санагдаж байна. Тиймээс холбох командын өмнө директорыг гэрийн хавтас руугаа өөрчлөх мөр нэмж өгөөд одоо ажиллаж байна.

Тэгэхээр миний windows хуваалцах хэсгийг Dropbox , миний холбох цэгийг / home / гэж нэрлэдэг. jamie / Dropbox , миний хэрэглэгчийн нэр jamie , үүнийг rc.local-д оруулсан зүйл:

cd /home/jamie
mount.vboxsf /home/jamie/Dropbox Dropbox vboxsf
exit 0
3
ответ дан 9 February 2013 в 01:22

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

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

Сохраните его как / 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 )

На этом этапе мы автоматически монтируем все общие папки, перечисленные на при запуске.

Для его размонтирования нам нужно только ввести:

sudo nano /etc/rc6.d/K99-vboxsf-umount.sh[1295 sizesSave ( Ctrl O ) и закрыть ( Ctrl X )

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

И все!

2
ответ дан 9 February 2013 в 01:22

Для более новых систем на основе systemd вам нужны альтернативные подходы - самый простой из них, упомянутый в другом ответе на другой вопрос, который в основном говорит, что вам нужен чтобы добавить специальный параметр comment к записи / etc / fstab :

src     /my_mount/src_host  vboxsf  auto,rw,comment=systemd.automount 0 0

Однако для того, чтобы вышеуказанное работало в некоторых системах, вам необходимо установить флажок «Auto-mount» в Общие папки VirtualBox-> Добавить диалог, что означает, что вы можете получить несколько дублирующих монтирований каталога.

Для более чистого монтирования - без дублирования каталогов и необходимости «Авто-монтирования» - вам нужно использовать systemd mount и automount . Для этого создайте две записи в / usr / lib / systemd / system / , названные в честь желаемой точки монтирования, например чтобы соответствовать указанной выше точке монтирования fstab, они будут называться my_mount-src_host.mount и содержать:

[Unit]
Description=VirtualBox shared "src" folder

[Mount]
What=src
Where=/my_mount/src_host 
Type=vboxsf
Options=defaults,noauto,uid=1000,gid=1000

и my_mount-src_host.automount :

[Unit]
Description=Auto mount shared "src" folder

[Automount]
Where=/my_mount/src_host
DirectoryMode=0775

[Install]
WantedBy=multi-user.target

Затем им нужно включить:

sudo systemctl enable  my_mount-src_host.automount
sudo systemctl enable  my_mount-src_host.mount

Теперь они будут монтироваться при загрузке. Если вы хотите смонтировать их немедленно (при условии, что общие папки были созданы), вы можете сделать это:

sudo systemctl start  my_mount-src_host.mount

Обратите внимание, если у вас есть каталоги с нечетными именами или дефисами (-) в них, используйте systemd-escape , чтобы найдите подходящее экранированное имя.

7
ответ дан 9 February 2013 в 01:22

Недавно я столкнулся с этим потоком, когда после обновления до Ubuntu LTS-18 (и не делая никаких изменений в VirtualBox, и после переустановки расширений и blah-de-blah), автомонтаж перестал работать. Каталоги sf_xxx присутствовали в /media/, но ни один из них не был смонтирован.

Попытки смонтировать их в /etc/fstab (как предполагает собственная документация VirtualBox) не сработали: загрузка не сработала в "аварийном режиме", даже когда я модифицировал файл /etc/modules.

То, что сделал в конце концов сработало - хотя я считаю это вонючим взломом - это трюк crontab, описанный выше.

По сей день я понятия не имею "что сломалось".

0
ответ дан 9 February 2013 в 01:22

Saya menghadapi masalah di mana saya dapat melihat folder bersama, tetapi tidak ada fail di dalamnya. Oleh itu, saya melakukan penggodaman yang serupa dengan yang ditunjukkan di atas:

Saya memastikan bahawa pengguna saya berada dalam kumpulan yang betul, dan ada entri di fstab untuk memasang bahagian, dan kebenarannya ditetapkan dengan betul , dan pemasangan automatik dihidupkan dalam tetapan VirtualBox, tetapi masih tidak ada fail yang dapat dilihat.
Oleh itu, saya membuka aplikasi Permulaan Permulaan di Ubuntu 18.04 GUI dan membuat tugas yang hanya menjalankan "sudo mount -a" tepat pada permulaan. Atas alasan apa pun folder bersama tidak dipasang dengan betul ketika fstab diuraikan secara automatik semasa boot, jadi pemasangan semula semuanya nampaknya dapat menyelesaikan masalah. Sekarang saya dapat melihat fail dalam bahagian.

0
ответ дан 9 February 2013 в 01:22

Я перепробовал все решения здесь, и ни одно из них не сработало.

Сработало только установить супервизор и запустить скрипт python.

установить супервизор

apt-get install supervisor

скрипт python (мой был в /home/ubuntu/shared_folders.py)

import subprocess
import os
import time

shared_folder = '/home/ubuntu/shared'

file_count = len(os.listdir(shared_folder))

mnt_command = 'mount -t vboxsf -o rw,uid=1000,gid=1000 shared-folder ' + shared_folder
if file_count == 0:
        # mount
        subprocess.Popen(mnt_command, shell=True)

time.sleep(3600)

создать конфигурационный файл для супервизора

nano /etc/supervisor/conf.d/sharedfolders.conf[1184208estive

[программа: общие_папки] команда = python shared_folders.py каталог = / home / ubuntu имя_процесса =% (имя_программы) s _% (номер_процесса) s numprocs = 1 numprocs_start = 0 autostart = true autorestart = true startsecs = 1 startretries = 3 коды выхода = 0,2 stopignal = TERM stopwaitsecs = 10 ; пользователь = pavelp redirect_stderr = правда stdout_logfile = / var / log / supervisor / qlistener-stdout.log stdout_logfile_maxbytes = 50 МБ stdout_logfile_backups = 10 stdout_capture_maxbytes = 0 stdout_events_enabled = ложь stderr_logfile = / var / log / supervisor / qlistener-stderr.log stderr_logfile_maxbytes = 50 МБ stderr_logfile_backups = 10 stderr_capture_maxbytes = 0 stderr_events_enabled = ложь environment = APPLICATION_ENV = разработка serverurl = AUTO

открыть supervisorctl

sudo supervisorctl

прочитать конфигурацию

повторно прочитать

добавить конфигурацию

добавить общие_папки

0
ответ дан 22 November 2019 в 23:10

(В моем случае моя основная ОС - Mac OS X, а моя гостевая ОС - ubuntu)

Ни одно из вышеперечисленных решений, а также решения, упомянутые здесь и здесь работал у меня. Была проблема со всеми из них.

Вот что я наконец сделал, чтобы решить проблему:

1- Я создал общую папку в пользовательском интерфейсе VirtualBox, указав на папку с именем VMShares в моя Mac OS, назвав ее wd

2- Затем я установил инструменты Ubuntu Guest Addition (требуется перезапуск)

3- Затем я сделал папку в моей гостевой ОС в качестве точки монтирования (в моем случае имя была / home / fashid / host )

4- Затем я запустил:

sudo VBoxControl sharedfolder list

Это была команда, которая должна была гарантировать, что общий ресурс доступен для гостевой ОС, при этом вам все равно нужно его смонтировать в гостевой ОС, чтобы сделать его доступным.

Будет показано что-то вроде:

Shared Folder mappings (1):
01 - VMShares

Это уловка! Он показывает фактическое имя, которое вам нужно ввести в команду ниже, чтобы на самом деле смонтировать его и сделать доступным в вашей гостевой ОС:

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

Вы поняли суть? Потом нигде wd не пользовался. На шаге 3 мне нужно было выбрать фактическое имя папки (хоста) вместо произвольного имени, которое я присвоил в диалоговом окне графического интерфейса пользователя.

С помощью вышеуказанных шагов моя проблема была решена.

1
ответ дан 22 November 2019 в 23:10

Другие вопросы по тегам:

Похожие вопросы: