Сбой монтирования общей папки 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


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. Немного взломать, но это сработало.


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

Сам не пробовал, но выглядит многообещающе.
— j_random_hacker

2

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

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


Вы уверены, что это были два пробела (код 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

Это не сработало для меня, но ответ Кевена Сэдлиера сработал .
— Марк Микофски
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.