Сбой монтирования общей папки Virtualbox из fstab; работает после завершения загрузки

41

Я установил Ubuntu 13.10 в Virtualbox 4.3. Хост-машина - Windows.

У меня есть несколько общих папок Virtualbox, которые монтируются в / etc / fstab. До недавнего времени эта установка работала просто отлично, но после обновления с Ubuntu 13.04 и Virtualbox 4.2 (практически одновременно) монтирование fstab перестало работать. Я получаю следующую ошибку во время загрузки:

An error occurred while mounting /home/benme/Documents.
keys:Press S to skip mounting or M for manual recovery

Нажатие M для восстановления вручную, а затем попытка монтирования вручную также завершается ошибкой:

root@benme-vb:~# cd /home/benme
root@benme-vb:/home/benme# mount Documents
/sbin/mount.vboxsf: mounting failed with the error: No such device

Но если я вместо этого пропускаю монтирование во время загрузки, подождите, пока Unity запустится, а затем смонтируйте вручную в оболочке, все работает нормально:

benme-vb ~ % ls Documents
benme-vb ~ % sudo mount Documents
[sudo] password for benme: 
benme-vb ~ % ls Documents
    # actual file list omitted

Обратите внимание, что когда я монтирую вручную, я позволяю mount принимать все параметры из / etc / fstab, и это работает. Это наводит меня на мысль, что это какая-то проблема с синхронизацией, когда Virtualbox не «готов» предоставить общие монтируемые файлы в момент запуска / etc / fstab во время загрузки.

Вот строка fstab, просто для полноты:

Documents       /home/benme/Documents   vboxsf  uid=benme,gid=benme,dmode=774,fmode=664     0   0

Могу ли я что-то сделать со стороны Ubuntu? Или кто-нибудь знает об этом больше с точки зрения Virtualbox?

Я нашел старый отчет об отслеживателе ошибок Virtualbox с идентичными симптомами, но в этом случае пользователь обновил Virtualbox без обновления своих гостевых дополнений и решения, которое решило проблему; здесь этого не происходит, я определенно установил гостевые дополнения 4.3.

Бен
источник

Ответы:

46

Я столкнулся с этой проблемой тоже. Я монтирую, /var/wwwиспользуя функциональность общих папок VBox, так что это довольно раздражает.

Решение, которое я нашел, состояло в том, чтобы заставить vboxsfмодуль загружаться раньше, до монтирования файловых систем. Просто добавьте vboxsfсобственную строку в /etc/modules.

Другое решение состоит в том, чтобы установить noauto /etc/fstabи вручную подключить диски /etc/rc.local, но это не было для меня хорошим решением, потому что к тому времени Apache уже запустился и не смог ничего найти /var/www.

Ричард Тернер
источник
1
здорово! добавление в / etc / modules работало отлично. спасибо Ричард!
ThePosey
@ThePosey рад, что помог!
Ричард Тернер
Это было проблемой для меня на госте Ubuntu Server 14.04. И этот ответ (решение / etc / modules) решил его для меня. Благодарность! PS Кстати, если вы, случайно, пытаясь выяснить / исправить вещи, включили автоматическое монтирование в настройках Virtualbox, отключите его снова;)
Reinis
2
@qodeninja Как я уже говорил во втором абзаце: «Просто добавьте vboxsfсобственную строку /etc/modules.
Ричард Тернер
1
Мне пришлось добавить vboxguest и vboxsf в / etc / modules в гостевой системе Ubuntu 14.04, чтобы это работало.
Маттанья
21

В дополнение к предложению Ричарда Тернера добавить vboxsfсобственную строку в /etc/modules, я предлагаю добавить _netdevопцию монтирования в /etc/fstab. Я тестировал на Ubuntu 12.04 LTS, и это, кажется, добавляет правильную задержку для успешного монтирования.

Моя /etc/fstabзапись:

dev /media/dev vboxsf defaults,_netdev 0 0

deoren
источник
4
Это работает для меня, даже без использования решения Тернера. Также имеет смысл, поскольку на странице справки сообщества Ubuntu для параметров fstab написано: « _netdev- это сетевое устройство, подключите его после подключения к сети». Я не придется загружать vboxsfв /etc/modules, только при добавлении _netdevработал!
Марк Микофски
1
Это работает и для меня на Ubuntu 16.04, даже без решения Тернера.
Женя
5

Исправление Ричарда перестало работать для меня после последнего обновления (VirtualBox 4.3.18, Ubuntu 14.04). К счастью, я смог это исправить, загрузив vboxsfпрямо с ядром:

# echo "vboxsf" >> /etc/initramfs-tools/modules
# update-initramfs -u

Первая команда добавляет параметр для загрузки модуля в ядро, а вторая обновляет файловую систему init. После перезагрузки я снова смог использовать мои fstab-mounts :)

Предупреждение. Процесс загрузки может зависнуть, если общая папка не может быть подключена. Поэтому проверьте свою конфигурацию, прежде чем добавить модуль в initramfs. Если ваша система все равно зависает, вы можете загрузиться в режиме восстановления, чтобы устранить проблему.

Торбена
источник
Я попробовал это решение, чтобы загрузить vboxsfмодуль ранее ... Он просто заморозил мою последовательность загрузки, поэтому мне пришлось удалить его.
Рерито
Да, включая модуль, который рано может заморозить процесс загрузки, если ваша конфигурация общей папки нарушена. Тем не менее, я никогда не испытывал никаких зависаний при загрузке с правильной конфигурацией ...
Torben
Я добавил предупреждение к ответу, чтобы прояснить ситуацию.
Торбен
4

Я просто хотел сказать, что принудительное начало vboxsfзагрузки модуля помогло мне (как в ответе Ричарда Тернера), но строка fstab все еще не работала для меня.

В итоге я поместил команду mount (которая сработала) в /etc/rc.local. Немного взломать, но это сработало.

ezuk
источник
1
Я не понимаю, как предложение Ричарда Тернера «помогло вам», но в то же время строка fstab «все еще не работает для вас» ...?
j_random_hacker
4

С общей папкой, указанной в fstab, я обнаружил, что загрузка зависает, когда она пытается смонтировать ее с помощью VirtualBox 5 и Ubuntu 14.04. Похоже, решение состоит в том, чтобы отложить монтирование до тех пор, пока сервис GuestAddition не станет доступен ( /etc/modulesрешение Ричарда Тернера мне показалось недостаточно).

Для этого убедитесь, что у вас есть noautoопции для общей папки в /etc/fstab. Например, для общей папки с именем vmshare:

vmshare    /home/user/share    vboxsf    defaults,noauto    0    0

Затем добавьте строку для /etc/rc.localмонтирования общего ресурса после загрузки:

mount vmshare
Кевин Садлер
источник
Это было единственное решение, которое работало для меня, используя VBox 5.0.16 и Ubuntu 14.04
TJ Compton
3

Похоже, что vboxsfотсутствует fs-vboxsfпсевдоним (то есть, как модули ядра автоматически загружаются при монтировании этого типа файловой системы в первый раз), поэтому добавление псевдонима /etc/modprobe.dдолжно помочь:

$ echo "alias fs-vboxsf vboxsf" | sudo tee /etc/modprobe.d/vboxsf.conf
hyperair
источник
Сам не пробовал, но выглядит многообещающе.
j_random_hacker
2

У меня была та же проблема, и я работал над предлагаемыми решениями, но безуспешно. Раствор Торбена заморозил ботинок, поэтому пришлось его отменить. Тогда я подумал, что я должен решить проблему /etc/fstabс использованием sudo mount -a. Синтаксис моей записи выглядел идеально, но все равно не получилось. Я также смог вручную смонтировать файловую систему с помощью команды mount в окне терминала.

Я обнаружил, что у меня есть пробелы между первыми двумя параметрами (устройство и точка монтирования). Я заменил их вкладкой, и это работает. В самом деле?!!!!

svenyonson
источник
Вы уверены, что это были два пробела (код ASCII 32)? Потому что один или несколько из них должны быть такими же хорошими, как символ табуляции. Иногда я случайно набираю неразрывные пробелы, когда нажимаю клавишу Shift раньше или отпускаю слишком поздно, нажимая клавишу пробела. Они выглядят одинаково, но путают многие приложения.
Дэвид Фёрстер
Все, что я знаю, - это то, что я перебрал все пустое пространство и вставил одну вкладку, и тогда все заработало.
svenyonson
Переключение моего пространства для вкладок работало для меня. В моем существующем / etc / fstab были пробелы (насколько я могу судить), и я точно их воспроизвел. Существующие строки имели один пробел. Но переписав мой с вкладками все заработало.
Jcaruso
Это не работает для меня, но после рекомендации Кевина Садлер использования noautoдля задержки монтажа затем добавить mount <sharename>к rc.localсделал трюк. Я не пробовал решение Тернера.
Марк Микофски
1

Я считаю, что нашел правильный способ справиться с этим в Arch Wiki . Используйте comment=systemd.automountопцию.

Вышеуказанная опция входит в /etc/fstabфайл с другими опциями. Например:

Fedora /var/ftp/pub/Fedora vboxsf uid=1001,gid=1001,comment=systemd.automount 0 0
ultracrepidarian
источник
Это не сработало для меня, но ответ Кевена Сэдлиера сработал .
Марк Микофски