web-dev-qa-db-ja.com

VirtualBox:mount.vboxsf:マウントに失敗してエラーが発生しました:そのようなデバイスはありません

私はゲストVM上でホストとCentOSとしてOS XでVirtualBoxを使用しています。

OS Xではフォルダmyfolderを作成し、それを共有フォルダとしてVMに追加し、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がインストールされました。

141
cnaize

これは、以下によって解決されました。

yum install gcc kernel-devel make

回避策はこちら: https://Gist.github.com/larsar/1687725

8
cnaize

共有フォルダ/クリップボードが何らかの理由で動作しなくなりました(おそらく仮想マシンにパッチをインストールしたことが原因です)。

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
150
Mats

共有フォルダを使用しているので、その機能をサポートするには仮想マシン内に 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"

カーネルヘッダファイルが足りないのかもしれません。

VM

VMの内部では、Guest Additions、カーネルヘッダをインストールしてサービスを開始し、カーネルエクステンションが実行されているかどうかを再確認する必要があります。

これはゲストOSによって異なりますので、簡単な手順は次のとおりです。

  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で確認してください。

    • DebianSudo apt-get -y install build-essential module-assistant virtualbox-ose-guest-utils

      見つからない場合はdpkg -l | grep virtualboxで確認してください。

    • 手動で isoファイル inside 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

メインの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

カーネルディレクトリが存在するかどうかを確認します(シンボリックリンクが既存のフォルダを指している)。そうでない場合は、それらを正しいフォルダーにインストールしてください(例:/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
60
kenorb

下記のコマンドを実行することでこれを解決できます

modprobe -a vboxguest vboxsf vboxvideo

50
Atul N

@ 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

この時点で、まだ次のエラーが発生する場合

そのようなデバイスはありません。 Guest Additionsのインストールが失敗した可能性があります。エラーは/var/log/vboxadd-install.logに記録されています

あなたはLinuxのヘッダをインストールする必要があります。

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

それからあなたはGuest Additionsをインストールすることができます:

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

次のようにしてLinuxを再起動します。

reboot

これで共有フォルダをマウントすることができます。

mount -t vboxsf Shared_Folder ~/SF/

より多くの情報(フランス語)は、この ページ をチェックしてください。

20
Froggiz

これが私にとってうまくいった唯一の解決策でした。

Vagrantプラグインをインストールします。 vagrant-vbguest 、VirtualBoxのGuest Additionを最新の状態に保つことができます。

vagrant plugin install vagrant-vbguest

出典: https://github.com/aidanns/vagrant-reload/issues/4#issuecomment-230134083

12
xxxbence

共有フォルダは以前は動作していましたが、突然動作しなくなりました(Virualbox - ホストはWindows 7、ゲストはOpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

そしてmount -t vboxsf testsf /opt/tsftestsfはVirtualbox共有フォルダに追加されたWindows Cドライブのフォルダ---そして/opt/tsfはOpenSuseのフォルダです

5
MAlam

私のホストはWindows10です私のVMゲストはvagrantによるubuntuビルドです。これは私のために働いた:

vagrant plugin install vagrant-winnfsd
4
Kaiacode

私は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

説明したエラーで突然動作しなくなった動作システムもありました。

私の/ lib/modulesを調べてみたところ、vboxvfsモジュールはもう存在しないように見えます。代わりに、modprobe vboxsfが、物事を再開するために必要な呪文です。

いつその変化が起こったのかわからないが、それは私を見つけ出した。

3
Tim N

2つのシナリオでエラー/不正確なアプローチがあります。両方をチェックしてそれを理解する

シナリオ1:

VBoxLinuxAdditions.runまたはVBoxSolarisAdditions.pkgまたはVBoxWindowsAdditions.exeを実行したら、すべてのモジュールが正しくインストールされているかどうかを確認します。

[...] 1.1.a。 VBoxLinuxAdditionsの場合、
VirtualBox Guest Additionsカーネルモジュールの構築に失敗しました、
/ 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

mountコマンドのオプションとして、あなたのvmユーザーのユーザーIDとグループIDを指定する必要があります。

[...] 2.2.a。ユーザーのuidとgidを取得する:
id -u <'user'>
id -g <'user'>
[...] 2.2.b。 mountコマンドのオプションにuidとgidを設定します。
mount -t vboxsf -o uid = x、gid = x共有フォルダー名ゲストフォルダー

2
yottabytt

Ubuntuではこれはうまくいきました:

Sudo apt-get install build-essential linux-headers-`uname -r` dkms
1
cstroe

私のための解決策はゲスト追加を更新することでした

(「デバイス」 - >「Guest Additions CDイメージの挿入」の順にクリックします)

1
Arch Linux Tux

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
1
Diego piccinini

私にとっては、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
Brad Parks

VirtualBox 5.0.16/rXXXでも同じ問題がありました

最新のVirtualBox 5.0.18をインストールし、最新のVagrant 1.9.3をインストールし、問題は落書きになりました。

1
Arun Sangal

Debianを使っているのなら:

1)Virtualbox Guest Additions ISOファイルを通してインストールされているすべてのパッケージを削除します。

sh /media/cdrom/VBoxLinuxAdditions.run uninstall

2)Virtualboxパッケージをインストールします。

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

modprobe vboxsfが何も返さない(つまりモジュールが正しくロードされる)場合でも、vboxsf.somount.vboxsfによって提供されるvirtualbox-guest-utilsという名前の実行可能ファイルを呼び出します。これを無視すると、エラーの本当の原因を理解できなくなります。

strace mount /your-directoryは大きな助けになりました(/sbin/mount.vboxsfにそのようなファイルやディレクトリはありません)。

0
Yvan

私は同様の問題を抱えている、それが一致しない場合はヘッダーをチェックしてから、以下のコマンドを実行

CentOS:Sudo yumアップデート&& Sudo yum -yインストールkernel-headers kernel-devel

0

更新は私のためにトリックをしました!

$ vagrant box update
$ vagrant plugin install vagrant-vbguest 
0
jetpackdata.com