vagrant-vbguestプラグインがGuestAdditionsを無効にしてしまう

  • 104
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

tl;dr

  • より新しいkernelが公開されているタイミングでGuestAdditions(以下GA)の再ビルドをすると、インストール済みGAが無効になる(削除されてから再ビルドに失敗する)
  • kernelのアップデートをすれば復旧は可能
  • vbguestプラグインを使うならGlobal Configurationauto_update = falseとしておきたい

発生を確認した状況

  • VirtualBox 4.3.18(Mac)
  • Vagrant 1.6.5
  • vagrant-vbguest 0.10.0
  • CentOS6の最新kernel: 2.6.32-504.el6
  • 使ったBox: chef/centos-6.5
    • インストール済みGAのバージョン: 4.3.8 (VirtualBoxのバージョンと不一致)
    • kernelのバージョン: 2.6.32-431.el6 (最新のバージョンと不一致)

発生する問題と原因

再現手順

$ vagrant plugin install vagrant-vbguest
$ vagrant init chef/centos-6.5
$ vagrant up

発生する問題

Synced Foldersのマウントに失敗する。(GAが無効になる)

Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

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

原因

  • VirtualBoxのバージョンとGAのバージョンが異なるためvbguestプラグインがGAの再ビルドを始める
  • インストール済みGAが削除される
  • アクティブなkernelと同じバージョンのkernel-develをインストールしようとするが、より新しいkernelが公開されているのでみつからない
  • GAのビルドが失敗し、GAが動作しない状態に

以下のIssueで指摘されている。

(どちらかといえばVirtualBox側の問題か)

対策

  • 予防策: 冒頭に書いたGlobal Configuration設定で不意の再ビルドを避ける
  • 復旧策: kernelのバージョンを上げて仮想マシンを再起動させる
    • アップデートしたkernelで起動される
    • vbguestプラグインがGAのビルドを始める
    • 今度はkernel-develのインストールに成功するので、GAのビルドが成功する
$ vagrant ssh -c 'sudo yum update -y kernel'
$ vagrant reload
$ vagrant vbguest --status
GuestAdditions 4.3.18 running --- OK.