2019/6/30 追記
以下のバージョンの組み合わせでは解決していた。
- Virtualbox 6.0.8
- Vagrant 2.2.5
- vagrant-vbguest (0.18.0)
以下は表題のバージョンの時の記録。
もう不要だとは思うがそのまま残しておく。
現象
- 1回目の
vagrant up
ではうまくいく。 - 一度
vagrant halt
で閉じた後に、vagrant up
すると/vagrant以下がマウントされない。以下のエラーが表示される。
bash: line 4: setup: command not found
==> default: Checking for guest additions in VM...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
setup
Stdout from the command:
Stderr from the command:
bash: line 4: setup: command not found
先に結論
2回目以降のvagrant up時に、vbguestのrebuildに失敗しているようだった。
切ってやったらマウントされた。
config.vm.provider "virtualbox" do |vm|
+ config.vbguest.auto_update = false
調査
環境
- Windows 10
- Vagrant 2.2.4
- Virtualbox 6.0.6r130049
- Ubuntu 18.04.2 LTS (Bionic Beaver)
kernelの問題かどうか
kernelを更新したらうまくいった事例があるとのこと。
最終更新が2019/01の、bento/ubuntu-18.0.4を使っていたので、これはあるかもしれない。
10Gしか容量がないので64Gあるbentoのほうを使っていたけど、とりあえず更新してみる。
Vagrant.configure(2) do |config|
- config.vm.box = "bento/ubuntu-18.04"
+ config.vm.box = "ubuntu/bionic64"
念のため、provisionもすべて切って試す。
変わらず。
vagrant-vbguestの確認
これはinstalledと言われているから問題ないはず、と思いつつも一度試す。
hibohiboo@ /d/develop/develop (master)
$vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.17.2)'!
- 1回目の、うまくいっている挙動のときは以下
$ vagrant vbguest --status
[default] GuestAdditions 6.0.6 running --- OK.
- 2回目の、失敗したときは以下
$ vagrant vbguest --status
[default] GuestAdditions seems to be installed (6.0.6) correctly, but not running.
まあ、そうだよね。。
デバッグログを出す
環境変数を設定してやればよいとのことだったので、gitbashで以下を起動。
$env VAGRANT_LOG=debug vagrant up
ttyname failed
これが原因?と、以下のように書き換えた。エラーは消えたが、現象に影響なし。
- mesg n || true
+ if `tty -s`; then
+ mesg n
+ fi
vagrant-vbguestをアンインストールしてみる。
エラーが出ている個所が、GuestAdditionsが not running
で、vbguestがrebuild
しようとして失敗している様子だった。
`block (2 levels) in guest_additions_state'
そこで、一旦vbguestを外してみることにする。
$vagrant plugin uninstall vagrant-vbguest
vagrant reload
で。。。起動した!
自動更新を無効にしてみる
アンインストールまでしなくとも、vagrantファイルにconfig.vbguest.auto_update = false
を追記で、vagrant up時のアップデートを無効にできるようなので記述してみる。
config.vm.provider "virtualbox" do |vm|
+ config.vbguest.auto_update = false
vagrant reload
で確認。問題なし。
vagrant 2.2.5が来たら上記の部分削ってもいいかなぁ。
おまけ
公式のubuntuの容量が少ないので増やす。
仮想マシンを立ち上げていない状態で作業する。
vagrant halt
vagrant plugin install vagrant-disksize
Vagrantfileにconfig.disksize.size = '64GB'
の記述を追加
config.vm.provider "virtualbox" do |vm|
config.vbguest.auto_update = false
+ config.disksize.size = '64GB'
起動してみる。ログでも変更を確認。中に入って確認したけれどもきちんと増えていた。
vagrant up
vagrant ssh
df -h
参考
vagrant upでエラー 「command failed! setup」
Vagrantで共有フォルダがマウントされない
vagrant up時にGuestAdditionsがnot runningになる場合、ゲストマシンのkernelをupdateすることで解決できる可能性がある
Vagrantプラグインの使い方(vbguest, hostmanager, sahara, snapshot)
Vagrant(VirtualBox)のUbuntuストレージ容量を拡張するには
UbuntuのDesktop環境にrootでログインする
vagrant起動時にmountエラーが出る時の対処方法
Vagrant 共有フォルダが同期できないときの対処法
Vagrantのmountエラーを解決しようとしたらvboxのリビルドがこける