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 установлен.

21 127

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

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

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

  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 file внутри 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 to отладки)
    • 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

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

Я могу решить эту проблему, запустив ниже commmand

modprobe -a vboxguest vboxsf vboxvideo

кроме @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/

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

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

установить плагин 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-хост был Windows 7, гость был OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

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

мой хозяин Windows10 моей гостевой виртуальной машине сборка Убунту с 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

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

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

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

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

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

сценарий 1 :

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

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

сценарий 2:

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

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

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

2.2.a. получение uid и gid пользователя:
      id-u
      id-g
2.2.b. установка uid и gid в параметрах команды монтирования:
      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: sudo yum update && sudo yum-y install kernel-headers kernel-devel

если вы на Debian:

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

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

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

(нажмите устройства - > вставить гостевые дополнения CD image)

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

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

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

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

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