VirtualBox: mount.vboxsf: помилка монтажу з помилкою: Немає такого пристрою [закрито]


160

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

У створеній папці OS XI myfolderдодав її як загальну папку до віртуального комп'ютера, увімкнув VM, у 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 встановлено.


Переконайтесь, що додатки для гостей встановлені належним чином, можливо, вам доведеться здійснити оновлення apdo-get; sudo apt-get install build-basic module-помощник; судо ма готуйся; Потрібно побачити, що будується модуль 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
Дякую! Я також мав встановити бродячий-vbguest плагін - stackoverflow.com/a/23752848/2043134
thomas_inckx

1
@aristofun @ brainmurphy1: у тому самому каталозі sudo ./vboxadd setupви можете це зробити раніше sudo ./vboxadd stop. Не впевнений, чи все-таки це потрібно, але я здогадуюсь, що це речення означає.
hraban

77

Ви використовуєте папки спільного доступу, тому вам потрібно встановити додатки для гостей VirtualBox всередині вашої віртуальної машини, щоб підтримувати цю функцію.

Бродячий

Якщо ви використовуєте Vagrant (OS X :)brew cask install vagrant , запустіть:

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.

    • вручну, завантаживши ізофайл всередині 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до налагодження)
    • 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

Спробуйте:

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
Перейдіть виправлення CentOS, це вирішило мою проблему, але переконайтеся, що у вас встановлено gcc.
ggdx

1
Користуючись тестовою кухнею шеф-кухаря ( бродячий ), для мене працював додаток бродяги vagrant-vbguest
pfernandom

У моєму випадку це було тому, що 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). Ви можете перерахувати ці 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
fider

/ медіа / cdrom ois порожній у моєму випадку
CCC

Чи натискали Ви встановити додатки для гостей у меню Пристрої?
Froggiz


9

Це було вирішено:

yum install gcc kernel-devel make

Вирішення можна знайти тут: https://gist.github.com/larsar/1687725


Ран усіх оновлень взагалі не пощастило. Вибачте, відповідь з 13 голосами попрацювала краще
Андрій Шатний

Я використовую хост Windows 7 з RHEL 7, і це вирішило це для мене (включаючи інформацію зі посилання по суті) - Дякую!
Кріс Таунсенд

У Ubuntu це спрацювало: sudo apt-get install build-basic 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, мій гість VM - це побудова ubuntu by vagrant. Це працювало для мене:

vagrant plugin install vagrant-winnfsd

3

У мене також була робоча система, яка раптом перестала працювати з описаною помилкою.

Після того, як у моєму / lib / модулі розгойдується, здається, що vboxvfsмодуля більше немає. Натомість modprobe vboxsfбуло необхідне заклик перезапустити речі.

Не впевнений, коли відбулася ця зміна, але мене це наздогнало.


1
Це працювало для мене після запуску `sudo modprobe vboxsf`
Viorel Mirea

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, а не те, що я маю у витязі сценарію.

Для сценарію побудови я використовую в додатковому вигляді для додатків:

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

Виглядає як виправлення на https://www.virtualbox.org/ticket/16670


3

Для мене рішенням було оновлення доповнень для гостей

(натисніть Пристрої -> Вставити зображення компакт-дисків додатків для гостей)


2

    У двох сценаріях можуть бути помилки / неправильний підхід. Перевірте їх і       визначте SCENARIO

1:

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

1.1.а. Якщо VBoxLinuxAdditions , якщо збірка
модулів ядра VirtualBox Guest Additions не вдалася,
перевірте файл журналу в /var/log/vboxadd-install.log . Якщо помилка викликана версією ядра, оновіть ваше ядро ​​та перезавантажте vm. У випадку Fedora ,
1.1.b. yum оновлення ядра *
1.1.c.перезавантажити
1.2. Якщо нічого не виходить, тоді все добре. Ви вже маєте очікувану версію ядра

SCENARIO 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 у своїх попередніх спробах змусити це працювати, використовуючи наступний процес, але я не думаю, що це допомогло. FYI!

# 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, випуск вийшов toodles.


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 & & sudo yum - встановлення заголовків ядра 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створить каталог / тест у /. sudo mkdir /testстворить той самий каталог, але належить root, а не поточний користувач.
bschlueter

У мене була така ж проблема. Отже, я встановив, kernel-devel.x86_64 0:2.6.32-754.11.1.el6а потім запустив ці команди-- cd /opt/VBoxGuestAdditions-*/initі sudo ./vboxadd setup. Це працювало для мене.
Vishwanath Sharma
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.