シングスブログ

中小企業のマーケティングやブランディングのコンサルティング。事業開発 (ビジネスモデルの開発)、ウェブマーケティングやウェブサイト改善など事業の持続的・長期的な成長・発展に貢献できるサービスを提供しています。

Vagrant 共有フォルダが同期できないときの対処法 /sbin/mount.vboxsf: mounting failed with the error: No such device

最近各 Linux ディストリビューションがリリースしている Vagrant Box を使うようになりました。
以前は、Bento project など良さそうな Vagrant Box を採用していましたが、
Linux ディストリビューションの Vagrant Box が整備されつつあるので、もっぱら使っています。

ただ Virtualbox Guest Additions がインスールされていない状態の Vagrant Box なので、
プロビジョニングの時にプラグイン vagrant-vbguest で入れるようにしています。
Vagrant では、いくつかフォルダ共有のタイプがあるのですが、
VirtualBox の共有フォルダ機能を使う場合は、Virtualbox Guest Additions が必須になります。

今回その時に遭遇した不具合対処メモ。

環境

  • Vagrant
  • VirtualBox
  • Vagrant Box は、centos/7
  • プラグイン vagrant-vbguest で Virtualbox Guest Additions をインストール
  • Provisioner は、ansible_local、Ansible でプロビジョニング

不具合現象

vagrant up すると、共有フォルダが同期できない現象。

==> default: Mounting shared folders... default: /vagrant => /Users/thingsym/vaw Vagrant was unable to mount VirtualBox shared folders. This is usually because the filesystem "vboxsf" is not available. This filesystem is made available via the VirtualBox Guest Additions and kernel module. Please verify that these guest additions are properly installed in the guest. This is not a bug in Vagrant and is usually caused by a faulty Vagrant box. For context, the command attempted was: mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant The error output from the command was: /sbin/mount.vboxsf: mounting failed with the error: No such device

遡って調べて診てみる。
Virtualbox Guest Additions はインストール完了したが、
vboxadd.service が立ち上がっていない。
結果、共有フォルダがマウンドできない。

Installing Virtualbox Guest Additions 5.2.12 Redirecting to /bin/systemctl start vboxadd.service Job for vboxadd.service failed because the control process exited with error code. See "systemctl status vboxadd.service" and "journalctl -xe" for details.

カーネルのバージョンが不一致になっている。

Please install the Linux kernel "header" files matching the current kernel for adding new hardware support to the system.

原因

Virtualbox Guest Additions をインストールするときに
必要なパッケージをインストールするのですが、
そのなかに kernel-headers が含まれていて
kernelのアップデートのタイミングの問題? なのか
アップデートしてしまう。

ゲスト側でカーネルを調べると、
カーネルのバージョンが不一致になっている。
今回は、パッチ番号 (693と862) が不一致に。

rpm -qa kernel\* | sort kernel-3.10.0-693.21.1.el7.x86_64 kernel-headers-3.10.0-862.2.3.el7.x86_64 kernel-tools-3.10.0-693.21.1.el7.x86_64 kernel-tools-libs-3.10.0-693.21.1.el7.x86_64

kernel-headers が kernel の最新バージョンに対応していない状態。

解決

vagrant ssh

ゲスト側に入り、kernelをアップデート

sudo yum -y update kernel sudo yum -y install kernel-devel kernel-headers kernel-tools kernel-tools-libs

カーネルのバージョン (パッチ番号862) を揃える

rpm -qa kernel\* | sort kernel-3.10.0-693.21.1.el7.x86_64 kernel-3.10.0-862.2.3.el7.x86_64 kernel-devel-3.10.0-862.2.3.el7.x86_64 kernel-headers-3.10.0-862.2.3.el7.x86_64 kernel-tools-3.10.0-862.2.3.el7.x86_64 kernel-tools-libs-3.10.0-862.2.3.el7.x86_64

再度プロビジョニング

vagrant reload

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です