私はゲスト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
がインストールされました。
共有フォルダ/クリップボードが何らかの理由で動作しなくなりました(おそらく仮想マシンにパッチをインストールしたことが原因です)。
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 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の内部では、Guest Additions、カーネルヘッダをインストールしてサービスを開始し、カーネルエクステンションが実行されているかどうかを再確認する必要があります。
これはゲストOSによって異なりますので、簡単な手順は次のとおりです。
カーネルインクルードヘッダをインストールします(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ファイル inside VM(例: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
スクリプトはあなたのカーネルソースが以下のディレクトリにあることを期待しています:
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カーネルをアップグレードする必要があります(ソースがカーネルよりも新しい場合)。
試してください:
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
下記のコマンドを実行することでこれを解決できます
modprobe -a vboxguest vboxsf vboxvideo
@ 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/
より多くの情報(フランス語)は、この ページ をチェックしてください。
これが私にとってうまくいった唯一の解決策でした。
Vagrantプラグインをインストールします。 vagrant-vbguest 、VirtualBoxのGuest Additionを最新の状態に保つことができます。
vagrant plugin install vagrant-vbguest
出典: https://github.com/aidanns/vagrant-reload/issues/4#issuecomment-230134083
共有フォルダは以前は動作していましたが、突然動作しなくなりました(Virualbox - ホストはWindows 7、ゲストはOpenSuSe)
modprobe -a vboxguest vboxsf vboxvideo
そしてmount -t vboxsf testsf /opt/tsf
(testsf
はVirtualbox共有フォルダに追加されたWindows Cドライブのフォルダ---そして/opt/tsf
はOpenSuseのフォルダです
私のホストはWindows10です私のVMゲストはvagrantによる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に似ています。
私は追加のためにvagrantで使うビルドスクリプトのために:
https://github.com/rburkholder/vagrant/blob/master/scripts/additions.sh
https://www.virtualbox.org/ticket/16670 で修正されるようです
説明したエラーで突然動作しなくなった動作システムもありました。
私の/ lib/modulesを調べてみたところ、vboxvfs
モジュールはもう存在しないように見えます。代わりに、modprobe vboxsf
が、物事を再開するために必要な呪文です。
いつその変化が起こったのかわからないが、それは私を見つけ出した。
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共有フォルダー名ゲストフォルダー
Ubuntuではこれはうまくいきました:
Sudo apt-get install build-essential linux-headers-`uname -r` dkms
私のための解決策はゲスト追加を更新することでした
(「デバイス」 - >「Guest Additions CDイメージの挿入」の順にクリックします)
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
私にとっては、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
VirtualBox 5.0.16/rXXXでも同じ問題がありました
最新のVirtualBox 5.0.18をインストールし、最新のVagrant 1.9.3をインストールし、問題は落書きになりました。
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.so
はmount.vboxsf
によって提供されるvirtualbox-guest-utils
という名前の実行可能ファイルを呼び出します。これを無視すると、エラーの本当の原因を理解できなくなります。
strace mount /your-directory
は大きな助けになりました(/sbin/mount.vboxsf
にそのようなファイルやディレクトリはありません)。
私は同様の問題を抱えている、それが一致しない場合はヘッダーをチェックしてから、以下のコマンドを実行
CentOS:Sudo yumアップデート&& Sudo yum -yインストールkernel-headers kernel-devel
更新は私のためにトリックをしました!
$ vagrant box update
$ vagrant plugin install vagrant-vbguest