VirtualBox: mount.vboxsf: lỗi không thành công với lỗi: Không có thiết bị nào như vậy [đã đóng]


160

Tôi đang sử dụng VirtualBox với OS X làm máy chủ lưu trữ và CentOS trên máy khách VM.

Trong thư mục đã tạo OS XI myfolder, đã thêm nó dưới dạng thư mục dùng chung vào VM, bật VM, trong thư mục được tạo bởi CentOS /home/user/myfoldervà gõ:

sudo mount -t vboxsf myfolder /home/user/myfolder

và có đầu ra:

/sbin/mount.vboxsf: mounting failed with the error: No such device

Tôi đang làm gì sai?

CẬP NHẬT:

Guest Additions Cài đặt.


Hãy chắc chắn rằng Guest Additions được cài đặt đúng cách, bạn có thể phải nâng cấp apt-get; sudo apt-get install build-Essential module-Assistant; sudo ma chuẩn bị; Bạn cần phải nhìn thấy các mô-đun Khách Aditions đang được xây dựng ...
NTG

9
Đối với người lướt web ngẫu nhiên, người gặp phải vấn đề này: Hãy tự giúp mình và xem câu trả lời thứ hai.
jrharshath

4
một mẹo - sudo mount -t vboxsf sf_folder /home/user/folder, ở đây sf_folderfolder PHẢI là các tên khác nhau
cnaize

5
@jrharshath Cái nào là "câu trả lời thứ hai"? Sắp xếp có thể thay đổi. Nhấp vào sharetrong câu trả lời để có được permalink.
wvducky

Câu trả lời:


167

Thư mục chia sẻ / clipboard của tôi đã dừng hoạt động vì một số lý do (có thể là do cài đặt bản vá trên máy ảo của tôi).

sudo mount -t vboxsf Shared_Folder ~/SF/

Đã cho kết quả sau:

VirtualBox: mount.vboxsf: mounting failed with the error: No such device

Giải pháp cho tôi là dừng vboxadd và thực hiện thiết lập sau đó:

cd /opt/VBoxGuestAdditions-*/init  
sudo ./vboxadd setup

1
Sau khi nâng cấp Ubuntu 12.04 vm của tôi lên Ubuntu 14.04, các thư mục được chia sẻ của tôi trống trong vm và khi thử gắn thủ công, tôi đã gặp lỗi /sbin/mount.vboxsf: mounting failed with the error: No such device. Sau khi chạy ở trên và khởi động lại hệ thống, các thư mục chia sẻ của tôi đã xuất hiện như trước khi nâng cấp .. cảm ơn!
Angelo

Vấn đề vẫn tồn tại trên VirtualBox 5.0.18 với một khách Ubuntu 16.04 và giải pháp này hiệu quả với tôi.
Ivan Perez

7
Làm thế nào để bạn dừng vboxadd?
aristofun

1
Cảm ơn! Tôi cũng đã phải cài đặt plugin vagrant-vbguest - stackoverflow.com/a/23752848/2043134
thomas_inckx

1
@aristofun @ brainmurphy1: trong cùng thư mục đó, trước đây sudo ./vboxadd setup, bạn có thể làm sudo ./vboxadd stop. Không chắc nó có còn cần thiết không, nhưng tôi đoán đó là câu đó nghĩa là gì.
hraban

76

Bạn đang sử dụng các thư mục chia sẻ, vì vậy bạn cần cài đặt VirtualBox Guest Additions bên trong máy ảo của mình để hỗ trợ tính năng đó.

Âm đạo

Nếu bạn đang sử dụng Vagrant (OS X brew cask install vagrant:), hãy chạy:

vagrant plugin install vagrant-vbguest
vagrant vbguest

Trong trường hợp không thành công, hãy kiểm tra nhật ký, vd

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

Có lẽ bạn chỉ thiếu các tệp tiêu đề kernel.

Máy ảo

Bên trong VM, bạn nên cài đặt Guest Additions, kernel tiêu đề và khởi động dịch vụ và kiểm tra lại nếu phần mở rộng kernel đang chạy.

Điều này phụ thuộc vào hệ điều hành khách, vì vậy đây là các bước ngắn gọn:

  1. Cài đặt kernel bao gồm các tiêu đề (được yêu cầu bởi VBoxLinuxAdditions).

    • XÁC NHẬN: sudo apt-get update && sudo apt-get install kernel-devel
    • CentOS: sudo yum update && sudo yum -y install kernel-headers kernel-devel
  2. Cài đặt bổ sung khách (điều này phụ thuộc vào hệ điều hành).

    • Ubuntu: sudo apt-get -y install dkms build-essential linux-headers-$(uname -r) virtualbox-guest-additions-iso

      Nếu bạn không thể tìm thấy nó, hãy kiểm tra aptitude search virtualbox.

    • Debian :sudo apt-get -y install build-essential module-assistant virtualbox-ose-guest-utils

      Nếu bạn không thể tìm thấy nó, hãy kiểm tra dpkg -l | grep virtualbox.

    • thủ công bằng cách tải xuống tệp iso bên trong VM (ví dụ wget) và cài đặt nó, ví dụ:

      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

        Gỡ lỗi thêm: cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run

  3. Kiểm tra kỹ xem phần mở rộng kernel có hoạt động không:

    • sudo modprobe vboxsf
  4. Bắt đầu / khởi động lại dịch vụ:

    • thủ công: sudo /opt/VBoxGuestAdditions*/init/vboxadd setup(thêm sudo sh -xvào gỡ lỗi)
    • Debian: sudo /etc/init.d/vboxadd-service start
    • Fedora: sudo /etc/init.d/vboxdrv setup
    • CentOS: sudo service VBoxService start

Xây dựng mô-đun bổ sung khách chính

Nếu ở trên không hoạt động, đây là các bước tinh vi hơn để khắc phục nó. Điều này giả định rằng bạn đã cài đặt VBoxGuestAdditions (như được hiển thị ở trên).

Lý do phổ biến nhất khiến việc gắn thư mục dùng chung không hoạt động có thể liên quan đến việc xây dựng mô-đun Guest Additions không thành công. Nếu trong /var/log/vboxadd-install.logbạn có lỗi sau:

Các tiêu đề cho kernel đang chạy hiện tại không được tìm thấy.

điều này có nghĩa là bạn đã không cài đặt nguồn kernel hoặc không thể tìm thấy chúng.

Nếu bạn đã cài đặt chúng theo hướng dẫn ở trên, hãy chạy lệnh này:

$ 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

Vì vậy, về cơ bản vboxaddscript đang mong đợi các nguồn kernel của bạn có sẵn tại thư mục sau:

ls -la /lib/modules/$(uname -r)/build

Kiểm tra xem thư mục kernel có tồn tại không (liên kết tượng trưng chỉ đến thư mục hiện có). Nếu không, vui lòng cài đặt chúng vào đúng thư mục (ví dụ: trong /usr/src/kernels).

Vì vậy, vboxaddscript có thể nhập thư mục nguồn kernel của bạn và chạy make kernelrelease, lấy giá trị và so sánh với phiên bản kernel hiện tại của bạn.

Đây là logic:

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

Nếu phiên bản kernel không khớp với các nguồn, có thể bạn đã nâng cấp kernel Linux của mình (trong trường hợp các nguồn mới hơn kernel của bạn).

CentOS

Thử:

vagrant plugin install vagrant-vbguest vagrant vbgues

Nếu không hoạt động, hãy thử các bước thủ công sau cho 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 sửa lỗi CentOS, nó đã giải quyết vấn đề của tôi nhưng hãy chắc chắn rằng bạn đã cài đặt gcc.
ggdx

1
Sử dụng Chef's Test Kitchen (Vagrant), plugin vagrant cài đặt vagrant-vbguest hoạt động với tôi
pfernandom

Trong trường hợp của tôi, đó là vì GuestAdditions không được khai báo giống nhau giữa Vagrant và Guest.
AnthonyB

1
vagrant plugin install vagrant-vbguest vagrant vbguestcũng hoạt động trên centos 7 và giải quyết vấn đề. Cảm ơn
Med Ali Difallah 13/03/19

55

Tôi có thể giải quyết vấn đề này bằng cách chạy bên dưới commmand

modprobe -a vboxguest vboxsf vboxvideo


Vấn đề tương tự đã xảy ra với khách vbox5.0.6 và Centos 7 của tôi. Vấn đề là tôi sẽ cần chạy nó mỗi lần sau khi (khởi động lại).
webbertiger

14
Điều này hoạt động vì đây là các mô-đun hạt nhân bạn cần chạy trên máy khách để VirtualBox thực hiện đúng tất cả các chức năng của nó. Cụ thể, vboxsf(VirtualBox Shared Folders) là những gì cần thiết ở đây. Bạn có thể liệt kê 3 tệp này trên mỗi dòng trong một tệp /etc/modules-load.d/(gọi là có thể virtualbox.conf) để duy trì thay đổi này thông qua việc khởi động lại.
Nhà giả kim hai bit

1
Trên máy khách Debian 8, việc chạy lệnh này làm hỏng đầu ra video.
CodingWithSpike

23

Ngoài câu trả lời @Mats , tôi đang thêm một số thông tin (nó đã giúp tôi trên Debian 8).

Thư mục chia sẻ / clipboard của tôi đã dừng hoạt động vì một số lý do (có thể là do cài đặt bản vá trên máy ảo của tôi).

sudo mount -t vboxsf Shared_Folder ~/SF/

Đã cho tôi kết quả sau:

VirtualBox: mount.vboxsf: mounting failed with the error: No such device

Giải pháp cho tôi là dừng vboxadd và thực hiện thiết lập sau đó:

cd /opt/VBoxGuestAdditions-*/init 
sudo ./vboxadd setup

Tại thời điểm này, nếu bạn vẫn nhận được lỗi sau:

Không có thiết bị như vậy. Cài đặt Guest Additions có thể đã thất bại. Lỗi đã được đăng nhập/var/log/vboxadd-install.log

Bạn cần cài đặt các tiêu đề linux:

apt-get install linux-headers-$(uname -r)

sau đó bạn có thể cài đặt Bổ sung khách:

sh /media/cdrom/VBoxLinuxAdditions.run --nox11

và khởi động lại Linux của bạn bằng cách:

reboot

sau đó bạn sẽ có thể gắn kết thư mục chia sẻ của bạn!

mount -t vboxsf Shared_Folder ~/SF/

Thêm thông tin (bằng tiếng Pháp), kiểm tra trang này .


3
apt-get install linux-headers-virtualđã trợ giúp với Lubfox 15.04 trên VirtualBox
fider

/ media / cdrom ois trống trong trường hợp của tôi
CCC

Bạn đã bấm vào Cài đặt bổ sung khách từ menu Thiết bị?
Froggiz


9

Điều này đã được giải quyết bằng:

yum install gcc kernel-devel make

cách giải quyết ở đây: https://gist.github.com/larsar/1687725


Ran tất cả các cập nhật không có may mắn nào cả. Xin lỗi, câu trả lời với 13 phiếu bầu đã hoạt động tốt hơn
Andrew Shatnyy

Tôi đang sử dụng máy chủ Windows 7 với RHEL 7 và điều này đã giải quyết nó cho tôi (bao gồm cả thông tin từ liên kết chính) - Cảm ơn bạn!
Chris Townsend

Trên Ubuntu, điều này đã hoạt động: sudo apt-get install build-Essential linux-headers- uname -rdkms
cstroe 13/1/2016

4
@AndrewShatnyy "trả lời với 13 phiếu bầu" là mơ hồ. Vui lòng gửi permalink cho câu trả lời mà bạn đang đề cập (nhấp vào sharebên dưới câu trả lời)
wvducky 10/03/2016

1
@wvducky bạn xin lỗi ngay. stackoverflow.com/a/29456128/849187 đã hoạt động hai lần rồi
Andrew Shatnyy

6

Thư mục được chia sẻ trước đây hoạt động với tôi nhưng đột nhiên nó ngừng hoạt động (Virualbox - máy chủ lưu trữ là Windows 7, Guest là OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

sau đó mount -t vboxsf testsf /opt/tsf ( testsflà thư mục trong ổ đĩa Windows C đã được thêm vào thư mục chia sẻ Virtualbox --- và /opt/tsflà thư mục trong OpenSuse


5

Máy chủ lưu trữ của tôi là Windows10, máy khách VM của tôi được xây dựng bởi Ubuntu. Điều này làm việc cho tôi:

vagrant plugin install vagrant-winnfsd

3

Tôi cũng có một hệ thống làm việc đột nhiên ngừng hoạt động với lỗi được mô tả.

Sau khi xáo trộn xung quanh trong / lib / mô-đun của tôi, có vẻ như vboxvfsmô-đun không còn nữa. Thay thếmodprobe vboxsf là câu thần chú cần thiết để khởi động lại mọi thứ.

Không chắc chắn khi thay đổi đó, nhưng nó đã khiến tôi bị loại.


1
Nó hoạt động với tôi sau khi chạy `sudo modprobe vboxsf`
Viorel Mirea

3

Tôi đang chạy VirtualBox 5.1.20 và gặp sự cố tương tự. Đây là một url đến nơi tôi tìm thấy bản sửa lỗi và bản sửa lỗi tôi đã triển khai:

# 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

Liên kết có một cái gì đó tương tự như /usr/lib/VBoxGuestAdditions/other/mount.vboxsf, hơn là những gì tôi có trong đoạn trích kịch bản.

Đối với một tập lệnh xây dựng, tôi sử dụng trong vagrant cho các bổ sung:

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

Có vẻ là một sửa chữa tại https://www.virtualbox.org/ticket/16670


3

Các giải pháp đối với tôi là để cập nhật thêm khách

(nhấp vào Thiết bị -> Chèn hình ảnh CD bổ sung của khách)


2

    Có thể có lỗi / cách tiếp cận không chính xác trong hai kịch bản. Kiểm tra cả hai và tìm ra

SCENARIO 1:

      Khi bạn đang chạy VBoxLinuxAdditions.run hoặc VBoxSolarisAdditions.pkg hoặc VBoxWindowsAdditions.exe, hãy kiểm tra xem tất cả các mô-đun có được cài đặt đúng không.

1.1.a. Trong trường hợp VBoxLinuxAdditions , nếu
Xây dựng mô-đun hạt nhân VirtualBox Guest Additions bị lỗi,
hãy kiểm tra tệp nhật ký trong /var/log/vboxadd-install.log . Nếu lỗi là do phiên bản kernel cập nhật kernel của bạn và khởi động lại vm. Trong trường hợp của fedora ,
1.1.b. yum cập nhật kernel *
1.1.c.khởi động lại
1.2. Nếu không có gì thất bại, thì tất cả đều ổn. Bạn đã có phiên bản kernel dự kiến

SCENARIO 2:

     Nếu VBoxGuestAdditions được cài đặt (kiểm tra thư mục / opt / VBoxGuestAdditions- * có mặt .... * đại diện cho phiên bản), bạn cần khởi động nó trước khi cài đặt.

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

      Bạn cần chỉ định id người dùng và id nhóm của người dùng vm của bạn làm tùy chọn cho lệnh mount.

2.2. Bắt uid và gid của người dùng:
      id -u <'user'>
      id -g <'user'>
2.2.b. Đặt uid và gid trong các tùy chọn của lệnh mount :
      mount -t vboxsf -o uid = x, gid = x shared_folder_name guest_folder


2

Đối với tôi, trên máy mac, hóa ra tôi có một hình ảnh VirtualBox cũ được lưu trữ trên máy không có siêu dữ liệu, vì vậy nó không được cập nhật lên phiên bản mới nhất.

Hình ảnh cũ đó có phiên bản cũ hơn của plugin vbguest được cài đặt trong đó, plugin vbguest mới hơn trên máy của tôi không thể hoạt động được.

Vì vậy, để khắc phục nó, tôi chỉ cần xóa hình ảnh mà Vagrant của tôi dựa trên, và sau đó Vagrant đã tải xuống phiên bản mới hơn và nó hoạt động tốt.

# Remove an old version of the virtual box image that my vagrant was using    
$ vagrant box remove centos/7 

Bạn có thể tìm ra những hộp bạn đã lưu trong bộ nhớ cache trên máy bằng cách chạy:

$ vagrant box list

Tôi cũng đã nâng cấp plugin vbguest của mình trong những nỗ lực trước đây để làm cho nó hoạt động, sử dụng quy trình sau đây, nhưng tôi không nghĩ rằng điều này có ích. FYI!

# Get rid of old plugins
vagrant plugin expunge 

# Globally install the latest version of the vbguest plugin`
vagrant plugin install vagrant-vbguest 

Nếu bạn thấy mang hộp không thành công khi nghiện khách, bạn có thể thử thực hiện các thao tác sau để đảm bảo các plugin cài đặt chính xác. Điều này tải xuống hình ảnh dựa trên mới nhất cho hệ thống của bạn (đối với tôi là CentOS) và có thể giải quyết vấn đề (nó đã làm cho tôi!)

$ vagrant box update

1

Trên Ubuntu, nó hoạt động:

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

1

Có vấn đề tương tự với VirtualBox 5.0.16 / rXXX

Đã cài đặt VirtualBox 5.0.18 mới nhất và cài đặt Vagrant 1.9.3 mới nhất, sự cố đã xảy ra.


1

Tôi đã thêm người dùng root

/etc/rc.d/rc.local 
/root/mount-vboxsf.sh

sau đó

chmod +x /etc/rc.d/rc.local

và tập lệnh mẫu /root/mount-vboxsf.sh(đặt tùy chọn uid và gid của riêng bạn)

modprobe -a vboxguest vboxsf vboxvideo
mount -t vboxsf NAME_SHARED_DIRECTORY /media/sf_NAME_SHARED_DIRECTORY -o rw,uid=0,gid=0

bạn cần thêm

chmod + /root/mount-vboxsf.sh

0

Tôi có vấn đề tương tự, kiểm tra tiêu đề nếu nó không khớp thì chạy bên dưới lệnh

CentOS: sudo yum update && sudo yum -y cài đặt kernel-headers kernel-devel


0

Nếu bạn đang sử dụng Debian:

1) xóa tất cả các gói đã cài đặt thông qua tệp ISO Virtualbox Guest Additions:

sh /media/cdrom/VBoxLinuxAdditions.run uninstall

2) cài đặt gói Virtualbox:

apt-get install build-essential module-assistant virtualbox-guest-dkms virtualbox-guest-utils

Lưu ý rằng ngay cả với modprobe vboxsf khi không trả về gì (vì vậy mô-đun được tải chính xác), vboxsf.sosẽ gọi một tệp thực thi có tên mount.vboxsf, được cung cấp bởivirtualbox-guest-utils . Bỏ qua điều này sẽ ngăn bạn hiểu nguyên nhân thực sự của lỗi.

strace mount /your-directorylà một trợ giúp tuyệt vời (Không có tập tin hoặc thư mục như vậy trên /sbin/mount.vboxsf).



-1

Dưới đây hai lệnh làm việc cho tôi.

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

-8

Được rồi mọi người đang thiếu một thực tế cơ bản.

mkdir /test - Làm cho thư mục con trong thư mục hiện tại.

sudo mkdir /test - Tạo thư mục trong Root.

Vì vậy, nếu tên thư mục chia sẻ của bạn là sharedvà bạn làm như sau:

mkdir /test
sudo mount -t vboxsf shared /test

Nó tạo ra lỗi này:

sbin/mount.vboxsf: mounting failed with the error: No such file or directory

Bởi vì thư mục ở sai vị trí! Vâng, đó là những gì lỗi này đang nói. Lỗi không nói là tải lại các tùy chọn khách VBOX.

Nhưng nếu bạn làm điều này:

sudo mkdir ~/test
sudo mount -t vboxsf shared ~/test

Sau đó, nó hoạt động tốt.

Tôi thực sự ngạc nhiên khi có nhiều người đề nghị tải lại các bổ sung của khách Vbox để giải quyết lỗi này hoặc viết một chương trình phức tạp để giải quyết một thư mục được tạo ở sai vị trí.


2
Lỗi đang gặp phải là "Không có thiết bị như vậy", không phải "Không có tệp hoặc thư mục như vậy". :)
mjtko

mynttest @ mynttest-VirtualBox: / media / sf_ Shared $ sudo mkdir ~ / test sudo mount -t vboxsf vb Shared ~ / test mkdir: tùy chọn không hợp lệ - 't' Hãy thử `mkdir --help 'để biết thêm thông tin.
Berit Larsen

1
mkdir /testsẽ tạo thư mục / test trong /. sudo mkdir /testsẽ tạo cùng một thư mục, nhưng được sở hữu bởi root chứ không phải người dùng hiện tại.
bschlueter

Tôi đã có vấn đề tương tự. Vì vậy, tôi đã cài đặt kernel-devel.x86_64 0:2.6.32-754.11.1.el6và sau đó chạy các lệnh này-- cd /opt/VBoxGuestAdditions-*/initsudo ./vboxadd setup. Điều đó làm việc cho tôi.
Vishwanath Sharma
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.