Ответ 1
Это было решено путем:
yum install gcc kernel-devel make
Обходной путь здесь: https://gist.github.com/larsar/1687725
Я использую 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
.
Это было решено путем:
yum install gcc kernel-devel make
Обходной путь здесь: https://gist.github.com/larsar/1687725
Моя общая папка/буфер обмена перестали работать по какой-либо причине (возможно, из-за установки патча на моей виртуальной машине).
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 на вашей виртуальной машине для поддержки этой функции.
Если вы используете Vagrant (OS X: brew cask install vagrant
), запустите:
vagrant plugin install vagrant-vbguest
vagrant vbguest
В случае сбоя проверьте журналы, например
vagrant ssh -c "cat /var/log/vboxadd-install.log"
Возможно, вам просто не хватает файлов заголовков ядра.
Внутри виртуальной машины вы должны установить гостевые дополнения, заголовки ядра и запустить службу и дважды проверить, работает ли расширение ядра.
Это зависит от гостевой операционной системы, поэтому выполните следующие действия:
Установка ядра включает заголовки (требуется с помощью VBoxLinuxAdditions).
sudo apt-get update && sudo apt-get install kernel-devel
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
для отладки)sudo /etc/init.d/vboxadd-service start
sudo /etc/init.d/vboxdrv setup
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:
$ 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: vagrant-vbguest, который может обновить ваши гостевые дополнения VirtualBox.
vagrant plugin install vagrant-vbguest
Источник: https://github.com/aidanns/vagrant-reload/issues/4#issuecomment-230134083
Общая папка раньше работала для меня, но все они внезапно перестали работать (Virualbox - хост был Windows 7, Guest был OpenSuSe)
modprobe -a vboxguest vboxsf vboxvideo
то
mount -t vboxsf testsf /opt/tsf
(testsf
была папка на диске Windows C, которая была добавлена в общую папку Virtualbox --- и /opt/tsf
- это папка в OpenSuse
Мой хост - это Windows10, мой гостевой гостевой гостевой сервер ubuntu построен бродягой. Это сработало для меня:
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, а не на то, что у меня есть в отрывке script.
Для сборки script я использую в бродячих для добавления:
https://github.com/rburkholder/vagrant/blob/master/scripts/additions.sh
Кажется, это исправление в https://www.virtualbox.org/ticket/16670
У меня также была рабочая система, которая внезапно перестала работать с описанной ошибкой.
После разворачивания в моих/lib/модулях окажется, что модуля vboxvfs
больше нет. Вместо этого modprobe vboxsf
было необходимым заклинанием для перезагрузки.
Не уверен, когда это изменение возникло, но оно меня поймало.
В двух сценариях могут быть ошибки/неправильный подход. Проверьте и то, и другое.
СЦЕНАРИЙ 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
В 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
и образец 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
Для меня на 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
У меня есть аналогичная проблема, проверьте заголовок, если он не соответствует, а затем запустите команду
CentOS: обновление sudo yum && & & sudo yum -y установить kernel-headers kernel-devel
Если вы используете 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
).
Решением для меня было обновить гостевые дополнения
(нажмите "Устройства" → "Вставить образ гостевого дополнения")
Обновление помогло мне!
$ 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
- создать каталог в 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, чтобы решить эту ошибку, или написать сложную программу для решения каталога, созданного в неправильном месте.