В VirtualBox: гора.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 установлен.

21 ответов


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

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

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

залетный

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

vagrant plugin install vagrant-vbguest
vagrant vbguest

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

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

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

VM

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

это зависит от гостевой операционной системы, поэтому вот краткие шаги:

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

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

    • 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 файл внутри VM (например wget) и установить его, например,

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

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

  3. дважды проверьте, что расширения ядра и работает:

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

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

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

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

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

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

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

так vboxadd скрипт может войти в исходный каталог ядра и запустить 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

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

modprobe -a vboxguest vboxsf vboxvideo


кроме @Mats ответ, я добавляю дополнительную информацию (это помогло мне в 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/

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


Это было единственное решение, которое сработало для меня:

установить плагин Vagrant:бродяга-vbguest, который может держать ваш дополнений VirtualBox гость в курсе.

vagrant plugin install vagrant-vbguest

источник:https://github.com/aidanns/vagrant-reload/issues/4#issuecomment-230134083


Это было решено:

yum install gcc kernel-devel make

обходной путь здесь:https://gist.github.com/larsar/1687725


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

modprobe -a vboxguest vboxsf vboxvideo

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


мой хост-Windows10 мой гость виртуальной машины-ubuntu build by vagrant. Это сработало для меня:

vagrant plugin install vagrant-winnfsd

Я запускаю 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, а не то, что у меня есть в отрывке сценария.

для скрипта сборки я использую в vagrant для дополнений:

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

Кажется исправить в https://www.virtualbox.org/ticket/16670


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

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

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


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

сценарий 1 :

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

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

сценарий 2:

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

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

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

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


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

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

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

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


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

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

затем

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

и пример скрипта /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

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

в CentOS: судо ням обновление && судо ням-y установить ядро-заголовки ядра-девел


если вы на Debian:

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

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).


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

(нажмите Devices - > Insert Guest Additions CD image)


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

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

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

# 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 

обновление сделало трюк для меня !

$ vagrant box update
$ vagrant plugin install vagrant-vbguest 

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

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

хорошо, всем не хватает основного факта.

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

sudo mkdir /test - сделать каталог в корне.

Итак, если ваше имя общего каталога 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 для решения этой ошибки или написать сложную программу для решения каталога, созданного в неправильном месте.