Подтвердить что ты не робот

Ошибка Vagrant: невозможно установить общие папки VirtualBox (гостевые дополнения, vboxsf)

Проблема

Я установил Vagrant в Windows 10, чтобы создать личную локальную среду разработки на виртуальной машине. Все, что я читал о Вагранте, говорит, что я могу даже раскрутить несколько систем и проверить связь между ними с помощью переадресации портов NAT. Но сначала я просто хочу создать одну виртуальную машину среды разработки, прежде чем я зайду слишком далеко с остальными.

Я установил VirtualBox, Vagrant, PuTTy и PuTTYGen в соответствии с этим руководством по SitePoint: https://www.sitepoint.com/getting-started-vagrant-windows/. Затем я создал папку проекта vagrant на диске C :, выполнил vagrant init, удалил Vagrantfile и, наконец, vagrant init ubuntu/trusty64. Затем я сделал vagrant up, но процесс завершился ошибкой:

Vagrant не удалось смонтировать общие папки VirtualBox. Обычно это происходит потому, что файловая система "vboxsf" недоступна. Эта файловая система доступна через гостевые дополнения VirtualBox и модуль ядра. Пожалуйста, убедитесь, что эти гостевые дополнения правильно установлены в гостевой системе. Это не ошибка в Vagrant и обычно вызывается неисправной коробкой Vagrant. Для контекста была предпринята команда:

mount -t vboxsf -o uid = 1000, gid = 1000 vagrant/vagrant

Вывод ошибки из команды был:

: Данный файл или каталог отсутствует

Вот скриншот моей командной строки Windows:

Screenshot of Vagrant/VirtualBox error

И вот текстовая версия:

C:\vagrant\sitepoint-test-2017-02-05>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' is up to date...
==> default: A newer version of the box 'ubuntu/trusty64' is available! You currently
==> default: have version '20160602.0.0'. The latest is version '20170202.0.0'. Run
==> default: 'vagrant box update' to update.
==> default: Setting the name of the VM: sitepoint-test-2017-02-05_default_1486399403587_55255
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Remote connection disconnect. Retrying...
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/vagrant/sitepoint-test-2017-02-05
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

The error output from the command was:

: No such file or directory

Моя настройка

OS: Microsoft Windows [Version 10.0.14393]
VirtualBox Version: 4.3.10 r93012
GuestAdditions Version: ???
Vagrant Version: 1.9.1 (Latest)
PuTTy Version: 0.67
PuTTYGen Version: 0.67

Установленные плагины и расширения

Vagrant:
- vagrant-share (1.1.6, system)
- vagrant-vbguest (0.13.0)

Что я уже пробовал

Этот пост показался мне наиболее перспективным в моих исследованиях.

К сожалению, ни одно из предложенных решений, ни любая из предоставленных ссылок не решили проблему. Я уже пробовал кучу вещей, но я не системный администратор (который, я полагаю, является набором навыков, который вам понадобится для устранения этой проблемы). Особенно тревожило то, что многие из "решений" 2013/2014 года, как недавно указали, больше не работают. Эти решения говорят о чем-то, что не работает с символическими ссылками, об установке плагинов, таких как vagrant-vbguest, и о том, что дополнения vbox не совпадают с чем-то. Я не совсем все это понимаю, но я старался изо всех сил. Вот что я уже пробовал, но это еще не решено:

  1. vagrant plugin install vagrant-vbguest. Vagrant показывает плагин как установленный, но я получаю ту же ошибку при vagrant up.

  2. Список ссылок, которые я прочитал при исследовании этой проблемы, не дал никакого рабочего решения.

Мои вопросы

  1. Я подозреваю, что проблема с VirtualBox, а не Vagrant. Это правда?

  2. Как я могу это исправить, чтобы я мог продолжить учебник?

  3. Кажется, с 2014 года произошло резкое снижение количества ответов на вопросы Vagrant о переполнении стека. В чем причина? Vagrant/VirtualBox больше не считается "лучшей практикой"? Есть ли лучшее решение, чтобы пользователи игнорировали вопросы Бродяги?

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

4b9b3361

Ответ 1

Эта проблема решена в VirtualBox 5.1.18.

Ответ 2

Вы можете понизить VirtualBox или отредактировать строку в файле:

В моей настройке это была строка 206:

C:\HashiCorp\Вагрант\встроенных\\ драгоценных камни драгоценных камней\бродячего-1.9.2\Lib\бродячая\Util\platform.rb

на моей главной машине.

Я сделал это, и он отлично работал в Windows 10! Я хотел бы добавить то, что я сделал в строке 206:

Перед редактированием: "\\? \" + path.gsub( "/", "\" )

После редактирования: path.gsub( "/", "\" )

Ответ 3

vagrant plugin install vagrant-vbguest

Это не сработало для меня, похоже, несовместимо с vagrant 1.9.2, я удалил последнюю версию виртуального окна (5.1.16) и установил версию 5.1.12 с последней версией vagrant 1.9.2 и усадьба, и это работает для меня.

Ответ 4

Гостевые дополнения несовместимы с версией VirtualBox. Аутентификация гостевых дополнений VirtualBox позволит решить, возможно, связанную с этим проблему:

vagrant plugin install vagrant-vbguest

Я рассмотрел эту проблему с помощью этого стека:

  • Windows 10
  • Oracle VirtualBox 5.1.16
  • Vagrant 1.9.2
  • config.vm.box = "hashicorp/exact64"

Ответ 5

Может быть несколько причин:

  1. Версия гостевого дополнения не соответствует версии VirtualBox, для этого вы можете обновить версию гостевого дополнения, запустив vagrant plugin install vagrant-vbguest
  2. Вы столкнулись с ошибкой vagrant с NFS в Windows: должно быть исправлено, поэтому, возможно, попробуйте обновить до последней версии Vagrant и VirtualBox
  3. В этом выпуске github https://github.com/fideloper/Vaprobash/issues/92 вы можете протестировать две вещи: использовать плагин winnfsd (https://github.com/winnfsd/vagrant-winnfsd) или попробовать настроить монтирование по умолчанию без NFS

У меня была та же проблема, и это было просто дополнение гостя, которое не было актуальным...

UDPATE: ошибка в Vagrant с NFS в Windows (пункт 2) была исправлена в версии 5.1.18, вновь появляется в версии 5.1.20 и снова исправляется в версии 5.2.

Ответ 6

Переход к Virtual Box 5.1.14 из 5.1.16 отлично работает.

Ответ 7

Я использую Vagrant 1.9.4 и VirtualBox 5.1.20. Никакое решение здесь не помогло мне.

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

Vagrant.configure("2") do |config|
    config.vbguest.auto_update = false
    [...]
end

Это скорее хакерское решение, чем решение. Я до сих пор не знаю, какова фактическая проблема, но я полагаю, что она связана с этим: https://www.virtualbox.org/ticket/16670

Ответ 9

Это ошибка в Vbox. Существует решение для исправления.

Вход в гостевые комнаты Vbox: по умолчанию пароль (бродяга/бродяга)

su
ln -sf /opt/VBoxGuestAdditions-5.1.20/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

выключение

запустите cmd из командной строки командной строки:

vagrant up

Это сработает.

Ответ 10

У меня есть аналогичная проблема, проверьте заголовок, если он не соответствует, а затем запустите команду

CentOS: обновление sudo yum && & & sudo yum -y установить kernel-headers kernel-devel

бродячая перезагрузка

он работает для меня.

Ответ 11

Резюме

Проблема с тем, что синхронизированные/общие папки больше не работают, заключается в том, что модуль ядра дополнений гостя VirtualBox не загружен.


объяснение

Это в основном вызвано автоматическим обновлением ядра linux, например, при запуске cronapt на виртуальной машине.

Если ядро получает новую версию, модуль dkms для гостевых дополнений не может быть перезапущен после перезагрузки виртуальной машины. Сервисный файл /etc/init.d/virtualbox-guest-utils проверяет, есть ли модуль ядра в

/lib/modules/'uname -r'

папка для vboxguest и vboxsf.

Пусть версия ядра при начальной настройке гостевых дополнений будет: 1.2.3

Обновленное ядро имеет версию: 1.2.4

uname -r приведет к 1.2.4, в то время как модуль dkms был установлен с версией ядра 1.2.3. Это может привести к тому, что служба добавления гостя virtualbox прервет выполнение и завершится с ошибкой, такой как modprobe xxxx failed.... fail modprobe xxxx failed....

Решение

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

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

Кажется, он называется по-разному в разных вариантах Linux. Вот небольшой список из них.

Debian

sudo apt install linux-headers-amd64

Ubuntu

sudo apt install linux-headers-generic

CentOS (не проверено)

Спасибо @Jayen Chondigara

sudo yum -y install kernel-headers kernel-devel