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


160

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

В OS XI создала папку 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 установлены.


Убедитесь, что Guest Additions установлена ​​правильно, возможно, вам придется обновить sudo apt-get; sudo apt-get install build-essential module-assistant; судо ма готовиться; Вы должны увидеть, что модуль Guest Aditions создается ...
ntg

9
Для случайного интернет-серфера, у которого возникла эта проблема: сделайте себе одолжение и посмотрите на второй ответ.
jrharshath

4
совет - sudo mount -t vboxsf sf_folder /home/user/folderздесь sf_folderи folder ДОЛЖНЫ быть разные имена
cnaize

5
@jrharshath Какой из них «второй ответ»? Сортировка может измениться. Нажмите на shareв ответ, чтобы получить постоянную ссылку.
wisbucky

Ответы:


167

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

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

1
После обновления моего Ubuntu 12.04 vm до Ubuntu 14.04 мои общие папки были пустыми в vm, и при попытке монтирования вручную я получил ошибку /sbin/mount.vboxsf: mounting failed with the error: No such device. После запуска описанного выше и перезапуска системы мои общие папки выглядели так же, как и до обновления .. спасибо!
Анджело

Проблема сохраняется на VirtualBox 5.0.18 с гостем Ubuntu 16.04, и это решение сработало для меня.
Иван Перес

7
как вы останавливаете vboxadd?
aristofun

1
Спасибо! Мне также пришлось установить плагин vagrant-vbguest - stackoverflow.com/a/23752848/2043134
thomas_inckx

1
@aristofun @ brainmurphy1: в том же каталоге, прежде чем sudo ./vboxadd setupвы можете сделать sudo ./vboxadd stop. Не уверен, что это все еще необходимо, но я предполагаю, что это означает это предложение.
Храбан

77

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

бродяга

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

vagrant plugin install vagrant-vbguest
vagrant vbguest

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

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

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

В.М.

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

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

  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-файл внутри виртуальной машины (например 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в отладку)
    • Debian: sudo /etc/init.d/vboxadd-service start
    • Fedora: sudo /etc/init.d/vboxdrv setup
    • CentOS: sudo service VBoxService start

Сборка основного модуля Guest Additions

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

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

Пытаться:

vagrant plugin install vagrant-vbguest vagrant vbgues

Если не сработает, попробуйте следующие шаги вручную для 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

1
RE исправление CentOS, оно решило мою проблему, но убедитесь, что у вас установлен gcc.
ggdx

1
Используя Chef's Test Kitchen (Vagrant), у меня
сработал

В моем случае это произошло из-за того, что GuestAdditions не были такими же объявленными между Vagrant и Guest.
AnthonyB

1
vagrant plugin install vagrant-vbguest vagrant vbguestработает также на Centos 7 и решил проблему. Спасибо
Мед Али Дифаллах

55

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

modprobe -a vboxguest vboxsf vboxvideo


Та же самая проблема произошла на моем госте vbox5.0.6 и Centos 7. Проблема в том, что мне нужно запускать это каждый раз после (пере) загрузки.
webbertiger

14
Это работает, потому что это модули ядра, которые вам нужно запустить на гостевой системе, чтобы VirtualBox правильно выполнял все свои функции. В частности, vboxsf(VirtualBox Shared Folders) это то, что здесь необходимо. Вы можете перечислить эти 3 файла по одному на строку в файле /etc/modules-load.d/(возможно, назовите это virtualbox.conf), чтобы сохранить это изменение при перезагрузке.
Двухразрядный алхимик

1
На гостевом компьютере Debian 8 эта команда испортила вывод видео.
CodingWithSpike

23

В дополнение к ответу @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/

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


3
apt-get install linux-headers-virtualпомог с Lubuntu 15.04 на VirtualBox
фидер

/ media / cdrom В моем случае пусто
CCC

Вы щелкнули «Установить гостевые дополнения» в меню «Устройства»?
Фроггиз

12

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

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

vagrant plugin install vagrant-vbguest

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


спасибо, это мне очень помогло (Y)
Pankaj Garg

9

Это было решено путем:

yum install gcc kernel-devel make

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


Запустил все обновления, не повезло вообще. Извините, ответ с 13 голосами "за" сработал лучше
Андрей Шатный

Я использую хост Windows 7 с RHEL 7, и это решило его для меня (включая информацию из главной ссылки) - Спасибо!
Крис Таунсенд

В Ubuntu это работало: sudo apt-get install build-essential linux-headers- uname -rdkms
cstroe

4
@AndrewShatnyy «ответ с 13 голосами против» неоднозначен. Пожалуйста, оставьте постоянную ссылку на ответ, на который вы ссылаетесь (щелкните shareпод ответом)
wisbucky

1
@ wisbucky ты прямо извини. stackoverflow.com/a/29456128/849187 работал уже два раза
Андрей Шатный

6

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

modprobe -a vboxguest vboxsf vboxvideo

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


5

Мой хост - Windows10, мой виртуальный гость - сборка Ubuntu от vagrant. Это сработало для меня:

vagrant plugin install vagrant-winnfsd

3

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

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

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


1
Это сработало для меня после запуска `sudo modprobe vboxsf`
Виорел Миреа

3

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


3

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

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


2

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

СЦЕНАРИЙ 1.

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

1.1.a. В случае VBoxLinuxAdditions , если происходит сбой сборки
модулей ядра VirtualBox Guest Additions ,
проверьте файл журнала в /var/log/vboxadd-install.log . Если ошибка связана с версией ядра, обновите ядро ​​и перезагрузите виртуальную машину. В случае 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 в качестве параметров команды mount.

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


2

Для меня на 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

1

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

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

1

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

Установил последнюю версию VirtualBox 5.0.18 и установил последнюю версию Vagrant 1.9.3, проблема вышла из строя.


1

Я добавил как пользователь 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

0

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

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


0

Если вы используете 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).



-1

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

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

-8

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

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


2
Обнаружена ошибка «Нет такого устройства», а не «Нет такого файла или каталога». :)
mjtko

mynttest @ mynttest-VirtualBox: / media / sf_shared $ sudo mkdir ~ / test sudo mount -t vboxsf vbshared ~ / test mkdir: неверный параметр - 't' Попробуйте `mkdir --help 'для получения дополнительной информации.
Берит Ларсен

1
mkdir /testсоздаст каталог / test в /. sudo mkdir /testсоздаст тот же каталог, но принадлежит пользователю root, а не текущему пользователю.
bschlueter

У меня была такая же проблема. Итак, я установил kernel-devel.x86_64 0:2.6.32-754.11.1.el6и запустил эти команды - cd /opt/VBoxGuestAdditions-*/initи sudo ./vboxadd setup. Это сработало для меня.
Вишванатх Шарма
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.