У меня установлена Ubuntu в Virtualbox. Я хочу автоматически смонтировать свою общую папку VirtualBox в Ubuntu при входе в Ubuntu. Я поместил следующую строку в мои ~. / Bashrc и ~ / .bash_profile:
sudo mount -t vboxsf windows_share /media/windows_share
где windows_share - это имя, которое я создал с Virtualbox. Но каждый раз, когда я запускаю свой Ubuntu, он запрашивает пароль, так как ему нужен sudo. Есть ли возможность автоматически подключать общий ресурс Windows без ввода пароля при каждом входе в систему?
Ubuntu коногун жүктөөдө ар дайым Виртуалдык Кутуну "жалпы папканы" орнотуу үчүн бизде эки жол бар. Биздин тандоодо кайсы вариант мыкты иштей тургандыгы жеке тандоого байланыштуу.
Бөлүшүлгөн папканы 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ында кириш ( булак ).
Виртуалдык Бокстун акыркы чыгарылыштарында жалпы папкаларды түзүүдө автоматтык түрдө орното алабыз:
Конок кайра жүктөлгөндөн кийин, бул бөлүшүлгөн папка коноктор каталогуна орнотулат / media /
топтун мүчөсү болгон бардык колдонуучуларга жеткиликтүү vboxsf
.
Изменить /etc/rc.local
sudo -H gedit /etc/rc.local
Перед exit 0
введите:
mount.vboxsf windows_share / media / windows_share vboxsf
Сохранить
(Необязательно) Создайте ярлык для рабочего стола или домашней папки:
ln -s / media / windows_share / home / freddy / Desktop
Для загрузки без ошибок, таких как нажатие S , чтобы пропустить монтирование, или нажатие M для восстановления вручную, возможно, придется удалить запись в fstab
После утомительного утра безуспешных попыток всего вышеперечисленного в Ubutntu 16.04, запущенного в Virtualbox 5.0.20 (особенно разочарован тем, что решение rc.local не работает), это сработало:
Регистрация в меню «Общие папки» графического интерфейса Virtualbox необходимого каталога, но НЕ автоматическое монтирование или постоянное монтирование из Virtualbox. В противном случае каталог хоста монтируется пользователем root, и доступ не-root пользователям затруднен даже из группы администраторов.
добавление простой записи в fstab:
[VirtuablBoxNameOfMount] / media / [guestOSuser] / [mountSubdir] vboxsf rw, noauto 0 1
Обратите внимание на параметр noauto
- иначе загрузчик выйдет из строя, как было отмечено.
Добавьте соответствующую строку в / etc / sudoers
следующим образом, используя команду visudo из гостевой ОС:
ALL ALL = NOPASSWD: / bin / mount / media / [guestOSuser] / [mountSubdir] /
Это позволит некорневым процессам специально монтировать это (поскольку fstab не может монтировать с опцией 'user' ...)
Добавьте соответствующую строку в .profile пользователя:
sudo mount / media / [guestOSuser] / [mountSubdir] /
Теперь выбранный подкаталог хоста готов к монтированию для выбранного пользователя после входа в систему!
Вот рабочее решение.
Как root (например, sudo su) Перейдите в домашнюю папку (cd ~) и создайте файл cron:
vi cronjobs
Добавьте следующие
@reboot sleep 15; монтировать -t vboxsf приложение / мнт / приложение
Сохранить файл
Примечание: замените app именем вашей общей папки и / mnt / app, куда вы хотите его подключить. В этом случае я сначала создал приложение папки при монтировании (приложение mkdir).
Чтобы включить ваш cron как root (для указанного выше имени файла)
crontab cronjobs
Убедитесь, что cron активен:
crontab -l
перезагрузка, и он будет смонтирован. 15-секундный сон дает достаточно времени, чтобы все было готово к установке.
Би rc.local шийдлийг туршиж үзсэн боловч ажиллуулж чадсангүй.
Гэсэн хэдий ч би энэ асуудлыг олж мэдсэн нь таны тушаалыг ажиллуулдаг хавтастай холбоотой юм шиг санагдаж байна. Тиймээс холбох командын өмнө директорыг гэрийн хавтас руугаа өөрчлөх мөр нэмж өгөөд одоо ажиллаж байна.
Тэгэхээр миний windows хуваалцах хэсгийг Dropbox
, миний холбох цэгийг / home / гэж нэрлэдэг. jamie / Dropbox
, миний хэрэглэгчийн нэр jamie
, үүнийг rc.local-д оруулсан зүйл:
cd /home/jamie
mount.vboxsf /home/jamie/Dropbox Dropbox vboxsf
exit 0
Я делаю это в очень похожем режиме, который был предложен выше, но эти скрипты создают необходимую и монтируют или размонтируют общую папку с помощью следующего скрипта:
#!/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
И все!
Для более новых систем на основе 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
, чтобы найдите подходящее экранированное имя.
Недавно я столкнулся с этим потоком, когда после обновления до Ubuntu LTS-18 (и не делая никаких изменений в VirtualBox, и после переустановки расширений и blah-de-blah), автомонтаж перестал работать. Каталоги sf_xxx
присутствовали в /media/
, но ни один из них не был смонтирован.
Попытки смонтировать их в /etc/fstab
(как предполагает собственная документация VirtualBox) не сработали: загрузка не сработала в "аварийном режиме", даже когда я модифицировал файл /etc/modules
.
То, что сделал в конце концов сработало - хотя я считаю это вонючим взломом - это трюк crontab
, описанный выше.
По сей день я понятия не имею "что сломалось".
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.
Я перепробовал все решения здесь, и ни одно из них не сработало.
Сработало только установить супервизор и запустить скрипт python.
apt-get install supervisor
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
sudo supervisorctl
повторно прочитать
добавить общие_папки
(В моем случае моя основная ОС - 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 мне нужно было выбрать фактическое имя папки (хоста) вместо произвольного имени, которое я присвоил в диалоговом окне графического интерфейса пользователя.
С помощью вышеуказанных шагов моя проблема была решена.