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

cnaize
источник
Убедитесь, что 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
kenorb
источник
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/

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

Froggiz
источник
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

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

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

yum install gcc kernel-devel make

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

cnaize
источник
Запустил все обновления, не повезло вообще. Извините, ответ с 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

Malam
источник
5

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

vagrant plugin install vagrant-winnfsd
Kaiacode
источник
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

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

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

Arch Linux Tux
источник
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

yottabytt
источник
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
cstroe
источник
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).

Yvan
источник
0

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

$ vagrant box update
$ vagrant plugin install vagrant-vbguest 
Шанкар АРУЛ - jupyterdata.com
источник
-1

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

vagrant ssh
sudo mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
SayOwl
источник
-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, чтобы решить эту ошибку, или написать сложную программу для решения каталога, созданного в неправильном месте.

CRANKYOLDGUY
источник
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. Это сработало для меня.
Вишванатх Шарма