VirtualBox: mount.vboxsf: установка завершилась с ошибкой: нет такого устройства

Я использую VirtualBox с OS X в качестве хоста и CentOS на гостевой виртуальной машине.

В OS X я создал папку myfolder, добавил ее в качестве общей папки для виртуальной машины, включил виртуальную машину, созданную в CentOS папку /home/user/myfolder и набрав:

sudo mount -t vboxsf myfolder /home/user/myfolder

и имеют выход:

/sbin/mount.vboxsf: mounting failed with the error: No such device

Что я делаю неправильно?

ОБНОВЛЕНО:

Guest Additions.

Ответ 2

Моя общая папка/буфер обмена перестали работать по какой-либо причине (возможно, из-за установки патча на моей виртуальной машине).

sudo mount -t vboxsf Shared_Folder ~/SF/

Получает следующий результат:

VirtualBox: mount.vboxsf: mounting failed with the error: No such device

Решение для меня состояло в том, чтобы остановить vboxadd и выполнить настройку после этого:

cd /opt/VBoxGuestAdditions-*/init  
sudo ./vboxadd setup

Ответ 3

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

Vagrant

Если вы используете Vagrant (OS X: brew cask install vagrant), запустите:

vagrant plugin install vagrant-vbguest
vagrant vbguest

В случае сбоя проверьте журналы, например

vagrant ssh -c "cat /var/log/vboxadd-install.log"

Возможно, вам просто не хватает файлов заголовков ядра.

VM

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

Это зависит от гостевой операционной системы, поэтому выполните следующие действия:

  • Установка ядра включает заголовки (требуется с помощью VBoxLinuxAdditions).

    • RHEL: sudo apt-get update && sudo apt-get install kernel-devel
    • CentOS: sudo yum update && sudo yum -y install kernel-headers kernel-devel
  • Установить гостевые дополнения (это зависит от операционной системы).

    • Ubuntu: sudo apt-get -y install dkms build-essential linux-headers-$(uname -r) virtualbox-guest-additions-iso

      Если вы не можете найти его, проверьте aptitude search virtualbox.

    • Debian: sudo apt-get -y install build-essential module-assistant virtualbox-ose-guest-utils

      Если вы не можете найти его, проверьте dpkg -l | grep virtualbox.

    • вручную, загрузив iso файл внутри виртуальной машины (например, wget) и установив ее, например

      • wget http://download.virtualbox.org/virtualbox/5.0.16/VBoxGuestAdditions_5.0.16.iso -P /tmp
      • sudo mount -o loop /tmp/VBoxGuestAdditions_5.0.16.iso /mnt
      • sudo sh -x /mnt/VBoxLinuxAdditions.run # --keep

        Дополнительная отладка: cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run

  • Дважды проверьте, что расширения ядра запущены и запущены:

    • sudo modprobe vboxsf
  • Запустить/перезапустить службу:

    • вручную: sudo /opt/VBoxGuestAdditions*/init/vboxadd setup (добавить sudo sh -x для отладки)
    • Debian: sudo /etc/init.d/vboxadd-service start
    • Fedora: sudo /etc/init.d/vboxdrv setup
    • CentOS: sudo service VBoxService start

Создание основного модуля гостевых дополнений

Если выше не работает, выполните более сложные шаги, чтобы исправить это. Это предполагает, что вы уже установили VBoxGuestAdditions (как показано выше).

Наиболее распространенная причина, по которой установка общей папки не работает, может быть связана с сбоем модуля Guest Additions. Если в /var/log/vboxadd-install.log появляется следующая ошибка:

Заголовки для текущего запущенного ядра не найдены.

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

Если вы установили их уже как указано выше, запустите эту команду:

$ sudo sh -x /opt/VBoxGuestAdditions-5.0.16/init/vboxadd setup 2>&1 | grep KERN
+ KERN_VER=2.6.32-573.18.1.el6.x86_64
+ KERN_DIR=/lib/modules/2.6.32-573.18.1.el6.x86_64/build

Итак, в основном vboxadd script ожидает, что ваши источники ядра будут доступны в следующем каталоге:

ls -la /lib/modules/$(uname -r)/build

Проверьте, существует ли каталог ядра (символическая ссылка указывает на существующую папку). Если это не так, установите их в нужную папку (например, в /usr/src/kernels).

Итак vboxadd script может войти в исходный каталог ядра и запустить make kernelrelease, получить значение и сравнить его с текущей версией ядра.

Вот логика:

KERN_VER=`uname -r`
KERN_DIR="/lib/modules/$KERN_VER/build"
if [ -d "$KERN_DIR" ]; then
    KERN_REL=`make -sC $KERN_DIR --no-print-directory kernelrelease 2>/dev/null || true`
    if [ -z "$KERN_REL" -o "x$KERN_REL" = "x$KERN_VER" ]; then
        return 0
    fi
fi

Если версия ядра не соответствует источникам, возможно, вам нужно обновить ядро ​​Linux (в случае, если источники более свежие, чем ваше ядро).

CentOS

Примеры шагов установки для CentOS:

$ sudo yum update
$ sudo yum install kernel-$(uname -r) kernel-devel kernel-headers # or: reinstall
$ rpm -qf /lib/modules/$(uname -r)/build
kernel-2.6.32-573.18.1.el6.x86_64
$ ls -la /lib/modules/$(uname -r)/build
$ sudo reboot # and re-login
$ sudo ln -sv /usr/src/kernels/$(uname -r) /lib/modules/$(uname -r)/build
$ sudo /opt/VBoxGuestAdditions-*/init/vboxadd setup

Ответ 4

Я могу решить это, выполнив команду commmand

modprobe -a vboxguest vboxsf vboxvideo

Ответ 5

В дополнение к @Mats answer, я добавляю дополнительную информацию (это помогло мне на Debian 8).

Моя общая папка/буфер обмена перестали работать по какой-либо причине (возможно, из-за установки патча на моей виртуальной машине).

sudo mount -t vboxsf Shared_Folder ~/SF/

Дал мне следующий результат:

VirtualBox: mount.vboxsf: mounting failed with the error: No such device

Решение для меня состояло в том, чтобы остановить vboxadd и выполнить настройку после этого:

cd /opt/VBoxGuestAdditions-*/init 
sudo ./vboxadd setup

В этот момент, если вы все еще получаете следующую ошибку:

Нет такого устройства. Возможно, установка гостевых дополнений завершилась неудачей. Ошибка зарегистрирована в /var/log/vboxadd-install.log

Вам нужно установить заголовки linux:

apt-get install linux-headers-$(uname -r)

то вы можете установить гостевые дополнения:

sh /media/cdrom/VBoxLinuxAdditions.run --nox11

и перезагрузите Linux:

reboot

тогда вы сможете подключить свою общую папку!

mount -t vboxsf Shared_Folder ~/SF/

Дополнительная информация (на французском языке), проверьте эту страницу.

Ответ 7

Общая папка раньше работала для меня, но все они внезапно перестали работать (Virualbox - хост был Windows 7, Guest был OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

то mount -t vboxsf testsf /opt/tsf (testsf была папка на диске Windows C, которая была добавлена ​​в общую папку Virtualbox --- и /opt/tsf - это папка в OpenSuse

Ответ 8

Мой хост - это Windows10, мой гостевой гостевой гостевой сервер ubuntu построен бродягой. Это сработало для меня:

vagrant plugin install vagrant-winnfsd

Ответ 9

Я запускаю VirtualBox 5.1.20 и имел аналогичную проблему. Вот URL-адрес, где я нашел исправление, и исправление, которое я выполнил:

# https://dsin.wordpress.com/2016/08/17/ubuntu-wrong-fs-type-bad-option-bad-superblock/
if [ "5.1.20" == "${VBOXVER}" ]; then
  rm /sbin/mount.vboxsf
  ln -s /usr/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
fi

У ссылки было что-то похожее на /usr/lib/VBoxGuestAdditions/other/mount.vboxsf, а не на то, что у меня есть в отрывке script.

Для сборки script я использую в бродячих для добавления:

https://github.com/rburkholder/vagrant/blob/master/scripts/additions.sh

Кажется, это исправление в https://www.virtualbox.org/ticket/16670

Ответ 10

У меня также была рабочая система, которая внезапно перестала работать с описанной ошибкой.

После разворачивания в моих/lib/модулях окажется, что модуля vboxvfs больше нет. Вместо этого modprobe vboxsf было необходимым заклинанием для перезагрузки.

Не уверен, когда это изменение возникло, но оно меня поймало.

Ответ 11

    В двух сценариях могут быть ошибки/неправильный подход. Проверьте и то, и другое.

СЦЕНАРИЙ 1:

      Когда вы запускаете VBoxLinuxAdditions.run или VBoxSolarisAdditions.pkg или VBoxWindowsAdditions.exe, проверьте, правильно ли установлены все модули.

1.1.a. В случае VBoxLinuxAdditions, если
Построение модулей ядра гостевых добавок VirtualBox не удается,
проверьте файл журнала в /var/log/vboxadd-install.log. Если ошибка связана с версией ядра, обновите свое ядро ​​и перезагрузите vm. В случае fedora,
1.1.b. yum update kernel *
1.1.c. перезагрузка
1.2. Если ничего не получилось, тогда все в порядке. У вас уже есть ожидаемая версия ядра

СЦЕНАРИЙ 2:

    Если установлена ​​VBoxGuestAdditions (проверьте наличие папки /opt/VBoxGuestAdditions - *.... представляет собой версию), вам необходимо запустить ее перед установкой.

2.1. cd/opt/VBoxGuestAdditions - */init && &./vboxadd start

    Вам нужно указать идентификатор пользователя и идентификатор группы вашего пользователя vm в качестве параметров команды монтирования.

2.2.а. Получение uid и gid пользователя:
      id -u < 'user' >
      id -g < 'user' >
2.2.b. Установка uid и gid в настройках команды mount:
      mount -t vboxsf -o uid = x, gid = x   shared_folder_name   guest_folder

Ответ 12

В Ubuntu это сработало:

sudo apt-get install build-essential linux-headers-`uname -r` dkms

Ответ 13

Была ли та же проблема с VirtualBox 5.0.16/rXXX

Установленный последний VirtualBox 5.0.18 и установленный последний Vagrant 1.9.3, проблема была отправлена ​​toodles.

Ответ 14

Я добавил пользователя root

/etc/rc.d/rc.local 
/root/mount-vboxsf.sh

то

chmod +x /etc/rc.d/rc.local

и образец script /root/mount-vboxsf.sh (установите собственные параметры uid и gid)

modprobe -a vboxguest vboxsf vboxvideo
mount -t vboxsf NAME_SHARED_DIRECTORY /media/sf_NAME_SHARED_DIRECTORY -o rw,uid=0,gid=0

вам нужно добавить

chmod + /root/mount-vboxsf.sh

Ответ 15

Для меня на Mac оказалось, что на моей машине хранится старое изображение VirtualBox, в котором не было метаданных, поэтому оно не обновлялось до последней версии.

В том старом образе была установлена более старая версия плагина vbguest, с которой не мог работать более новый плагин vbguest на моей машине.

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

# Remove an old version of the virtual box image that my vagrant was using    
$ vagrant box remove centos/7 

Вы можете узнать, какие ящики были кэшированы на вашем компьютере, запустив:

$ vagrant box list

Я также обновил свой плагин vbguest в моих предыдущих попытках заставить это работать, используя следующий процесс, но я не думаю, что это помогло. К вашему сведению!

# Get rid of old plugins
vagrant plugin expunge 

# Globally install the latest version of the vbguest plugin'
vagrant plugin install vagrant-vbguest 

Если вы обнаружите, что в гостевых надстройках произойдет сбой установки окна, вы можете попробовать сделать следующее, чтобы убедиться, что плагины установлены правильно. Это загружает последний основанный образ для вашей системы (для меня CentOS) и может решить проблему (это для меня!)

$ vagrant box update

Ответ 16

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

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

Ответ 17

Если вы используете Debian:

1) удалить все установленные пакеты через ISO файл Virtualbox Guest Additions:

sh/media/cdrom/VBoxLinuxAdditions.run uninstall

2) установить пакеты Virtualbox:

apt-get install build-essential module-assistant virtualbox-guest-dkms virtualbox-guest-utils

Обратите внимание, что даже если modprobe vboxsf ничего не возвращает (поэтому модуль загружен правильно), vboxsf.so будет вызывать исполняемый файл с именем mount.vboxsf, который предоставляется virtualbox-guest-utils. Игнорирование этого не даст вам понять истинную причину ошибки.

strace mount/your-directory была очень /sbin/mount.vboxsf (такого файла или каталога нет в /sbin/mount.vboxsf).

Ответ 18

Решением для меня было обновить гостевые дополнения

(нажмите "Устройства" → "Вставить образ гостевого дополнения")

Ответ 19

Обновление помогло мне!

$ vagrant box update
$ vagrant plugin install vagrant-vbguest 

Ответ 20

Ниже у меня работает две команды.

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

Ответ 21

Хорошо, все упускают основной факт.

mkdir/test - создает подкаталог в текущем каталоге.

sudo mkdir/test - создать каталог в Root.

Так что если ваше имя общего каталога является shared и вы делаете следующее:

mkdir /test
sudo mount -t vboxsf shared /test

Это генерирует эту ошибку:

sbin/mount.vboxsf: mounting failed with the error: No such file or directory

Потому что каталог находится не в том месте! Да то, что говорит эта ошибка. Ошибка не говорит перезагрузить гостевые опции VBOX.

Но если вы сделаете это:

sudo mkdir ~/test
sudo mount -t vboxsf shared ~/test

Тогда все работает нормально.

Меня действительно удивляет, как много людей предлагают перезагрузить гостевые дополнения Vbox, чтобы решить эту ошибку, или написать сложную программу для решения каталога, созданного в неправильном месте.