不具合症状
Mac上のvagrantで、dockerコンテナでいくつかのサーバを稼働させているのですが、vagrantで起動したゲストOSが起動しなくなり、vagrant ssh
でもvagrant halt
も出来なくなった。
$ vagrant halt
The provider 'virtualbox' that was requested to back the machine
'default' is reporting that it isn't usable on this system. The
reason is shown below:
Vagrant could not detect VirtualBox! Make sure VirtualBox is properly installed.
Vagrant uses the `VBoxManage` binary that ships with VirtualBox, and requires
this to be available on the PATH. If VirtualBox is installed, please find the
`VBoxManage` binary and add it to the PATH environmental variable.
virtualboxが見つからない? 消えた?
Virtualboxが消えた原因
おそらく、定期的にHomebrewで更新をかけたのが原因ではないかと推測。brew update;brew upgrade
でVirtualboxに更新があった場合に、アンインストールのスクリプトが実行され、インストールが正常にできなかったので、消失したままなのではないかと。
virtualboxを再インストールしてみる
$ brew reinstall virtualbox
...
(kernel) Kext org.virtualbox.kext.VBoxNetFlt did not stop (return code 0x5).
(kernel) Kext org.virtualbox.kext.VBoxNetFlt can't unload - module stop returned 0xdc008017.
Failed to unload org.virtualbox.kext.VBoxNetFlt - (libkern/kext) kext (kmod) start/stop routine failed.
An error occurred durning 'sudo /sbin/kextunload -m org.virtualbox.kext.VBoxNetFlt', there should be a message above. (rc=3)
unloading org.virtualbox.kext.VBoxDrv
(kernel) Can't remove kext org.virtualbox.kext.VBoxDrv; services failed to terminate - 0xdc008018.
Failed to unload org.virtualbox.kext.VBoxDrv - (libkern/kext) kext is in use or retained (cannot unload).
再インストールも失敗してますね。
どうやら、VBox関連のプロセスが起動したままなのでインストール出来ないようです。
VBox関連のプロセスを停止
$ ps aux|grep VBox
user 1053 4.9 16.9 10433224 5664640 ?? S 27 421 1198:10.06 /Applications/VirtualBox.app/Contents/MacOS/VBoxHeadless --comment vagrant_default_1617775585834_25189 --startvm 92f812c7-e002-4915-a44e-37f956c82adc --vrde config
user 86410 0.2 0.0 4399028 792 s000 R+ 10:36AM 0:00.00 grep VBox
user 925 0.0 0.1 4876816 18988 ?? S 27 421 15:23.36 /Applications/VirtualBox.app/Contents/MacOS/VBoxSVC --auto-shutdown
user 923 0.0 0.0 4427532 11152 ?? S 27 421 2:34.08 /Applications/VirtualBox.app/Contents/MacOS/VBoxXPCOMIPCD
VBOX関連のプロセスが起動していたため、再インストールに失敗しているので、VBOX関連のプロセスをkill
上記の場合だとkill 923 925 1053
この後、再度、Virtualboxをインストールしたところ、無事インストールが完了し、vagrant up
で正常に起動した
補足
なんだかんだ、Virtualbox+vagrantは不具合に遭う機会が多いように感じます
今後もVirtualboxの更新が入ると、同症状の問題が起きる可能性が高いので、homebrewでvirtualboxを除外しておいた方が無難かもしれませんね。
指定したフォーミュラを除外
brew pin フォーミュラ名
除外を解除(元に戻す)
brew unpin フォーミュラ名
除外設定したフォーミュラの一覧表示
brew list --pinned