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

Проблема

Я установил Vagrant в Windows 10, чтобы создать личную локальную среду разработки на виртуальной машине. Все, что я читал о Vagrant, говорит о том, что я даже могу запустить несколько систем и проверить связь между ними с помощью переадресации портов 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 бродяга / бродяга

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

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

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

Снимок экрана с ошибкой Vagrant / VirtualBox

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

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's 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 года количество ответов на бродячие вопросы на Stack Overflow резко упало. В чем причина этого? Vagrant / VirtualBox больше не считается «лучшей практикой»? Есть ли лучшее решение, чтобы пользователи игнорировали вопросы Vagrant?

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


person Eric Hepperle - CodeSlayer2010    schedule 06.02.2017    source источник
comment
Привет, Эрик, ты нашел какое-нибудь решение? Мой друг тоже столкнулся с этой проблемой, и я помогаю ему найти решение, но ничего из того, что я нашел, у него не сработало.   -  person Rizki Pratama    schedule 14.03.2017
comment
@softtama Лучшее и самое простое решение - понизить виртуальный бокс до версии 5.1.14. Связано с проблемой github.com/mitchellh/vagrant/issues/8352   -  person Hype    schedule 14.03.2017


Ответы (11)


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

person chaitan64arun    schedule 21.03.2017
comment
Эта проблема исчезла, когда я обновился до 5.1.18 с 5.1.16. - person Morio; 03.04.2017
comment
Мне нравятся подробные ответы, которые дали другие, однако этот был самым простым и сработал. К сожалению, это указывает на то, что возникла проблема, которая, по-видимому, не была хорошо известна до тех пор, пока я не опубликовал этот вопрос. Означает ли это, что ни один новичок не смог установить VirtualBox + гостевые дополнения в течение последних 3 лет (по крайней мере, с 2014 года) из-за этой проблемы, или это проблема только VirtualBox в Windows? - person Eric Hepperle - CodeSlayer2010; 20.04.2017
comment
К сожалению, эта проблема снова возникла сейчас, когда я обновился с 5.1.18 до 5.1.20. - person Szczepan Hołyszewski; 22.04.2017
comment
@ SzczepanHołyszewski то же самое здесь, на 5.1.24 - person Strake; 26.07.2017
comment
Для меня он также появился снова с 5.1.20 - но теперь вышел VirtualBox 5.2.0! Обновление снова исправило это для меня. Эрик Хепперле - CodeSlayer2010 - если вам нужен полный пример для работающей установки на нескольких машинах с Windows И Linux, ознакомьтесь с первыми частями этой статьи blog.codecentric.de/en/2017/09/ (абзац. Установка Vagrant для нескольких компьютеров под управлением Windows и Linux для Docker Swarm). - person jonashackt; 17.11.2017
comment
Кажется, он снова появился в версии 5.2.2 VirtualBox, поэтому не обновляйте - person mtpultz; 14.12.2017
comment
Virtual Box v5.2.8 все еще имеет эту проблему - person Allen; 19.03.2018
comment
Это также имеет проблемы с v5.2.26. Я бы сказал, проблема регресса. - person cnobile; 12.03.2019
comment
Вроде бы снова появился в VirtualBox-6.0.12-133076-Win - person Dave Babbitt; 27.09.2019

vagrant plugin install vagrant-vbguest

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

person Daniel Carr    schedule 10.03.2017
comment
Это сработало для меня☺! У меня Vagrant 1.9.2 и Virtual Box 5.1.16r113841 - person Pathros; 12.03.2017
comment
yeeeeeeeeeeeeeeeeeeeeeesssss. - person Elon Zito; 15.03.2017
comment
Да! Большое спасибо. Это работало с Virtual Box 5.1.22 и Vagrant 1.9.4. - person imapotatoe123; 11.05.2017
comment
У меня тоже работали: Vagrant 1.9.5 и VirtualBox 5.1.22. - person wumpz; 18.06.2017

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

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

C: \ HashiCorp \ Vagrant \ embedded \ gems \ gems \ vagrant-1.9.2 \ lib \ vagrant \ util \ platform.rb

на моей хост-машине.

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

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

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

person Anders    schedule 10.03.2017

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

vagrant plugin установить vagrant-vbguest

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

  • Windows 10
  • Oracle VirtualBox 5.1.16
  • Бродяга 1.9.2
  • config.vm.box = "hashicorp / точный64"
person YUSUF YILDIZ    schedule 09.03.2017
comment
Для каких бродячих ящиков вы пробовали? При той же настройке, что и вы, для меня автоматическое обновление гостевых дополнений виртуального бокса не решает проблему при использовании ubuntu / xenial64 в качестве бродячего бокса. Похоже, что гостевые дополнения vbox имеют некоторые проблемы с UNC-кодированными путями, которые бродяги использует для общей папки. vbox версии 5.1.14 работает нормально. Заранее спасибо! - person l00tr; 09.03.2017
comment
Спасибо за ответ @JosephStar. Я уже сделал это обновление до публикации своего вопроса, но безрезультатно. Моя ситуация похожа на то, что описывает @lootr, за исключением моего в Ubuntu Server 14 LTS something. Все еще жду хорошего решения ... удивлен, что никто еще не сообщил об этой проблеме ... - person Eric Hepperle - CodeSlayer2010; 09.03.2017
comment
Спасибо, использование 5.1.14 было единственным решением проблемы для меня. - person Mr_CryptoPrime; 09.03.2017
comment
Та же проблема. При переходе с 5.1.16 на 5.1.14 кое-что было исправлено. Спасибо, @Mr_CryptoPrime! - person clk; 10.03.2017
comment
@ EricHepperle-CodeSlayer2010 Теперь для этого существует проблема с бродяжничеством на github github.com/mitchellh/vagrant/ issues / 8352 - person l00tr; 10.03.2017
comment
Прохладный. Я попытаюсь перейти на более раннюю версию и сообщу об этом. - person Eric Hepperle - CodeSlayer2010; 15.03.2017
comment
у меня это сработало при установке laravel (5.4) Homestead на vagrant version-1.9.7. На win-10 с папками типа NTFS в Homestead.yaml - person Yevgeniy Afanasyev; 05.08.2017
comment
Спасибо за это. Я использую Vagrant 1.9.5 и Virtual Box 5.1.28 (хотя это началось с 5.1.20). Я прошел через многое, прежде чем нашел это. - person adprocas; 22.09.2017

Причин может быть несколько:

  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.

person loicmathieu    schedule 08.02.2017
comment
Спасибо за Ваш ответ. Я не знаю, доберусь ли я до этого на этой неделе, но я сообщу и дам вам знать, сработало ли это. - person Eric Hepperle - CodeSlayer2010; 10.02.2017
comment
Попробуйте вообще отключить гостевые дополнения vbox и снова запустить vagrant. Отредактируйте Vagrantfile: 1) machine.vm.synced_folder '.', '/ Vagrant', введите: user_config.vagrant_mount_method, disabled: true 2) config.vbguest.auto_update = false Или здесь вы можете увидеть, как компилировать гостевые дополнения вручную: stackoverflow.com/questions/28328775/ - person Dmitry; 15.02.2017
comment
в моем случае мне понадобились и vagrant plugin install vagrant-vbguest, и vagrant plugin install vagrant-winnfsd - person Chris; 06.01.2018
comment
@Chris Установка vagrant-winffsd также устранила мою проблему! - person GiamPy; 10.03.2018

Переход на Virtual Box 5.1.14 с 5.1.16 работает нормально.

person Sven    schedule 15.03.2017

Я использую 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

person user3245821    schedule 27.04.2017

В Virtualbox 5.1.20 тоже есть регресс.

Проблема с бродягой: https://github.com/mitchellh/vagrant/issues/8502

Проблема с Virtualbox: https://www.virtualbox.org/ticket/16670#comment:4

На данный момент исправление состоит в том, чтобы вернуться к Virtualbox 5.1.18, где он работал.

person Jayflux    schedule 01.05.2017
comment
Спасибо, Джейфлюкс! Итак, WTF ошибается с VirtualBox в том, что он не может постоянно делать хороший продукт, который просто работает? Это немного расстраивает, так как я преследовал эту проблему на разных итерациях коробки более 4 лет. - person Eric Hepperle - CodeSlayer2010; 25.05.2017

Это ошибка в Vbox. Есть решение исправить.

Войдите в Vbox guestos: по умолчанию пароль (vagrant / vagrant)

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

Это будет работать.

person user3369245    schedule 16.06.2017

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

CentOS: sudo yum update && sudo yum -y установить заголовки ядра kernel-devel

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

меня устраивает.

person Jayen Chondigara    schedule 13.06.2017

Резюме

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

Проблема напрямую не связана с версией VirtualBox! Возможно, так и было в прошлом, но следующее объяснение охватывает около 95% случаев возникновения этой проблемы.


Объяснение

Это в основном вызвано автоматическим обновлением ядра 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. Это приведет к тому, что служба добавления гостя виртуального бокса прервет выполнение и выдаст сообщение об ошибке, например modprobe xxxx failed.....

Решение

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

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

Кажется, что в разных версиях 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

person func0der    schedule 23.01.2019
comment
Отличное объяснение и правильное решение IMO! - person elb98rm; 13.01.2020