Ubuntuでvagrant upした際にフリーズしてしまう事象の解消
Ubuntu 16.04上でvagrant up
した際にPC(ホストOS)がフリーズしてしまう問題が起きていました。
# vagrantを利用すると、ここで止まってしまう ==> default: Booting VM...
代替案としてDockerを利用していたものの、どうも使いづらく感じることが多かったので、やはりvagrantを復旧したいと思い、情報を漁っていました。
寄り道も多かったのですが、復旧できたのでその方法を記載します。
なお結局起こっていた問題としては、(vagrant経由であるなしに関わらず)VirtualBoxでゲストOSをブートするタイミングでフリーズする、というものです。
バージョン確認などのvagrantコマンドが全く使えなくなるとかではないし、VirtualBoxをGUIで操作してゲストOSを起動しようとする際にもフリーズは発生しました。
VMWareを使う方法もあったんですが、スムーズにいかなかったので諦めました。
ここでは、引き続きVirtualBoxを使う形で復旧します。
解決方針の決定
とりあえずキーワードでググったところ次の記事が見つかりました。
Ubuntu 16.04 freezes on vagrant up - Ask Ubuntu
事象としては全く同じだったので、ここに記載されているよう、
Vagrantのバージョンを2.0.1へ、
VirtualBoxのバージョンを5.2へ、
それぞれ上げる方向で解決します。
なお、トラブル発生時点、修正前の各ソフトのバージョンは次の通り。
$ vagrant -v Vagrant 1.8.1 $ vboxmanage -v 5.0.40_Ubuntur115130
インストールをやり直す
ここでは、一度アンインストールを行ってから再度インストールを行います。
何はともあれ、いまのバージョンをいったん捨てます。
$ sudo apt purge -y vagrant
が、実行したところ、「/var/lib/dpkg/lockが取得できないよ」と怒られてしまいました。。。
自分のケースでは裏側でVirtualBoxが起動していたのが原因だったので、これを止めてアンインストールを進めます。
# VirtualBoxの起動状況を確認し、必要なら停止させる $ sudo service virtualbox status $ sudo service virtualbox stop # まずVagrantをアンインストール $ sudo apt purge -y vagrant $ rm -r ~/.vagrant.d # 続いてVirtualBoxもアンインストール $ sudo apt purge -y virtualbox
続いて、それぞれをバージョン指定しつつインストールします。
# まずはVirtualBox更新のための諸々を進める $ sudo add-apt-repository "deb http://download.virtualbox.org/virtualbox/debian xenial contrib" $ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - $ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add - $ sudo apt update $ sudo apt install -y virtualbox-5.2 dkms # VirtualBoxインストールの成功を確認 $ vboxmanage -v 5.2.6r120293 # 続いてVagrant $ wget https://releases.hashicorp.com/vagrant/2.0.1/vagrant_2.0.1_x86_64.deb $ sudo apt install -y ./vagrant_2.0.1_x86_64.deb # Vagrantインストールの成功を確認 $ vagrant -v Vagrant 2.0.1
ドライバの設定をリフレッシュする
上記までで、希望していたバージョンのソフトウェアをインストールできました。
では適当なディレクトリを作成して早速起動、と思ったところでまた問題が。。。
$ vagrant init ubuntu/trusty64 $ vagrant up Bringing machine 'default' up with 'virtualbox' provider... ==> default: Box 'ubuntu/trusty64' could not be found. Attempting to find and install... default: Box Provider: virtualbox default: Box Version: >= 0 ==> default: Loading metadata for box 'ubuntu/trusty64' default: URL: https://vagrantcloud.com/ubuntu/trusty64 ==> default: Adding box 'ubuntu/trusty64' (v20180206.0.0) for provider: virtualbox default: Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20180206.0.0/providers/virtualbox.box ==> default: Successfully added box 'ubuntu/trusty64' (v20180206.0.0) for 'virtualbox'! ==> default: Importing base box 'ubuntu/trusty64'... ==> default: Matching MAC address for NAT networking... ==> default: Checking if box 'ubuntu/trusty64' is up to date... ==> default: Setting the name of the VM: for-ubuntu_default_1518682274211_45707 ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat ==> default: Forwarding ports... default: 22 (guest) => 2222 (host) (adapter 1) ==> default: Booting VM... There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["startvm", "ad479413-2179-4177-a944-be0ca8a8e145", "--type", "headless"] Stderr: VBoxManage: error: The virtual machine 'for-ubuntu_default_1518682274211_45707' has terminated unexpectedly during startup with exit code 1 (0x1) VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine
再度調べてみたところ、どうやらドライバーのバージョンが更新されていないらしい・・・?
virtualbox - VBoxManage is unable to start vm code NS_ERROR_FAILURE ubuntu 16.04 - Ask Ubuntu
実際にmodinfo vboxdrv
というコマンドを叩いてみると、versionの値が5.2系であることを期待していたものの、5.0系のようでした。
上記記事の回答では設定ファイルを削除(!)して再起動、再インストールするというアグレッシブな解決が提示されています。
さすがに怖すぎるので、再設定系のコマンドを見つけてきて実行することにしました。
$ sudo dpkg-reconfigure virtualbox-dkms $ sudo dpkg-reconfigure virtualbox-5.2 $ modinfo vboxdrv version: 5.2.6
そして一度ホストOSを再起動し、Vagrant実験用のディレクトリも丸ごと作成し直しました。
すると、無事に起動することを確認できました。
# PCの再起動後、Vagrantfile含むテスト用ディレクトリも作り直し $ rm -r for-ubuntu $ mkdir for-ubuntu $ cd for-ubuntu # ようやく成功。。。 $ vagrant init ubuntu/trusty64 $ vagrant up
結構時間をかけてしまったので、同じ苦労を踏む人が減ればなーって感じです。