2014/07/15(火) [n年前の日記]
#1 [virtualbox][vagrant] VirtualBox + Vagrantを使ってみようとしたけどトラブル発生でハマってしまった
VirtualBox + Vagrant を使えばテスト用サーバ環境を簡単に作成・削除できるという話を以前からチラチラ目にして気になっていたので、MySQL を勉強するついでにこの際導入してみようかなと思い立ったのですが。
vagrant は便利とか、簡単に使えるという話だったけど、全然そんなことはなかった…。というか、VirtualBox が不具合を起こしっぱなしで、巷の解説ページのようにはすんなり動いてくれなくて。vagrant どうこうとかソレ以前の状態で。
ちなみに、環境は、Windows7 x64。
症状としては以下のような感じ。
VirtualBox と Vagrant のバージョンによって相性があるという話を見かけたので、以下の版を試してみたけど、結果は変わらず。
_Fix VirtualBox Fatal Could not read from Boot Medium! System Halted start-up boot Error - YouTube という動画を見かけて、どうもSATAコントローラの下にHDDイメージがあると不具合が起きる時があるようだと思えてきた。試しに、IDEコントローラの下にHDDイメージを移してみたところ、フツーにゲストOSが起動してくれた。ココがダメなのか…。分かるのに半日かかった…。
その後も色々試してみたけど。以下の可能性がありそう。
今までは、何故か以下のようなフォルダ構成で。
それが、.VirtualBox\ 等を削除した後では、例えば以下のような構成に。
それとも、VirtualBox と一緒にインストールされるデバイスだかドライバだかに問題があるのだろうか? 完全アンインストールできないものだろうか…。アンインストール用のツールを探してみたけど見当たらず。
vagrant は便利とか、簡単に使えるという話だったけど、全然そんなことはなかった…。というか、VirtualBox が不具合を起こしっぱなしで、巷の解説ページのようにはすんなり動いてくれなくて。vagrant どうこうとかソレ以前の状態で。
ちなみに、環境は、Windows7 x64。
- VMware Player がインストール済み。
- 随分昔に、VirtualBox をインストールしてたけど、現在はアンインストールしてある状態。
症状としては以下のような感じ。
- vagrant up で仮想PCを作成するものの、「default: Warning: Remote connection disconnect. Retrying...」というメッセージが繰り返し表示されてしまって先に進まない。
- Vagrantfile を修正してGUI表示をしてみたら、VirtualBoxのウインドウに、「Fatal. Could not read from the boot medium. System halted.」とメッセージが表示されていた。要するに、起動用メディアが見つからないのでOSが起動できないと言っているらしい。そもそもOSが起動してないのだから接続しようもなく、故に vagrant up 時にタイムアウトメッセージが出てくるのだと思う。
- 起動用メディア(HDDイメージ)は、仮想PCのSATAコントローラ以下で設定されている。
VirtualBox と Vagrant のバージョンによって相性があるという話を見かけたので、以下の版を試してみたけど、結果は変わらず。
- VirtualBox 4.3.12 + Vagrant 1.6.3
- VirtualBox 4.3.8 + Vagrant 1.3.5
_Fix VirtualBox Fatal Could not read from Boot Medium! System Halted start-up boot Error - YouTube という動画を見かけて、どうもSATAコントローラの下にHDDイメージがあると不具合が起きる時があるようだと思えてきた。試しに、IDEコントローラの下にHDDイメージを移してみたところ、フツーにゲストOSが起動してくれた。ココがダメなのか…。分かるのに半日かかった…。
その後も色々試してみたけど。以下の可能性がありそう。
- 大昔にインストールした VirtualBox の設定が残り続けていたのがマズかったのかもしれない。仮想PCのファイル・フォルダ構成が、昔と今とでは変わっていて、不具合が出ていたのかも。
- Windowsのテンポラリフォルダ内に、変なセットアップファイルが残り続けてる、かもしれない。
- ユーザホームディレクトリ\.VirtualBox\ に設定が入ってるので、VirtualBoxアンインストール後に、該当フォルダを削除。
- CCleaner 等で、テンポラリフォルダの中身を削除。
今までは、何故か以下のようなフォルダ構成で。
VirtualBox\BIOS_image\ VirtualBox\HardDisks\ VirtualBox\Machines\
それが、.VirtualBox\ 等を削除した後では、例えば以下のような構成に。
VirtualBox VMs\Ubuntu\Ubuntu.vbox VirtualBox VMs\Ubuntu\Ubuntu.vbox-prev VirtualBox VMs\Ubuntu\Ubuntu.vdi VirtualBox VMs\Ubuntu\Logs\もしかすると、.vbox と .vdi を同じフォルダに入れておかないと、SATAコントローラ利用時は問題が起きるということかもしれず。
それとも、VirtualBox と一緒にインストールされるデバイスだかドライバだかに問題があるのだろうか? 完全アンインストールできないものだろうか…。アンインストール用のツールを探してみたけど見当たらず。
◎ 導入時の作業手順をメモ。 :
一応、導入時の作業手順をメモ。
VirtualBox と Vagrant のセットアップファイルをDLしてくる。
_Downloads - Oracle VM VirtualBox
_Download Vagrant - Vagrant
VirtualBox-4.3.12-93733-Win.exe、vagrant_1.6.3.msi をDLして、実行した。Vagrant インストール後、OS再起動を要求される。
VirtualBox のインストールフォルダにPATHを通しておいた方がいいらしい。環境変数 PATH を修正。
Vagrant がインストールできたかテスト。
仮想PCの雛形ファイル群を、box と呼ぶらしい。 _A list of base boxes for Vagrant - Vagrantbox.es から欲しい box を選ぶ。
boxをダウンロード。
boxの一覧を表示。
仮想PCの設定ファイル保存場所を、どこかのフォルダ内に作成する。
設定ファイルを作成。
設定ファイルを編集。GUI表示を有効にすることで、OSがちゃんと起動してるか確認できるようにする。Vagrantfile というファイルをエディタで開いて修正。
動作確認のために、VirtualBox を一応起動しておく。
ゲストOSを起動。
とりあえずどうにか動かせるようになったと仮定して。
putty から以下の情報でログインする。
仮想PCを終了(シャットダウン)。
VirtualBox と Vagrant のセットアップファイルをDLしてくる。
_Downloads - Oracle VM VirtualBox
_Download Vagrant - Vagrant
VirtualBox-4.3.12-93733-Win.exe、vagrant_1.6.3.msi をDLして、実行した。Vagrant インストール後、OS再起動を要求される。
VirtualBox のインストールフォルダにPATHを通しておいた方がいいらしい。環境変数 PATH を修正。
Vagrant がインストールできたかテスト。
vagrant -vバージョンが表示される。
仮想PCの雛形ファイル群を、box と呼ぶらしい。 _A list of base boxes for Vagrant - Vagrantbox.es から欲しい box を選ぶ。
boxをダウンロード。
vagrant box add ubuntu14.04 https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.boxVagrant の設定や、box などは、C:\Users\ユーザ名\.vagrant.d\ 以下に保存される。
boxの一覧を表示。
vagrant box list
仮想PCの設定ファイル保存場所を、どこかのフォルダ内に作成する。
mkdir ubuntu14.04 cd ubuntu14.04
設定ファイルを作成。
vagrant init ubuntu14.04
設定ファイルを編集。GUI表示を有効にすることで、OSがちゃんと起動してるか確認できるようにする。Vagrantfile というファイルをエディタで開いて修正。
config.vm.provider "virtualbox" do |vb| # Don't boot with headless mode vb.gui = true # Use VBoxManage to customize the VM. For example to change memory: vb.customize ["modifyvm", :id, "--memory", "1024"] end問題無く起動することが分かったら、コメントアウトしちゃってもいいと思う。
動作確認のために、VirtualBox を一応起動しておく。
ゲストOSを起動。
vagrant upここで自分は前述のように問題発生。
とりあえずどうにか動かせるようになったと仮定して。
putty から以下の情報でログインする。
ホストIPアドレス 127.0.0.1 ポート 2222 ユーザ名 vagrant パスワード vagrant
仮想PCを終了(シャットダウン)。
vagrant halt
◎ Vagrantのコマンドをメモ。 :
ゲストOSの状態を確認。
sshでログイン。もしくはsshログインのための情報を表示。
boxを削除。
仮想PC再起動。
仮想PCを削除。
vagrant status
sshでログイン。もしくはsshログインのための情報を表示。
vagrant sshWindows環境の場合は、sshクライアントが標準でインストールされてないので、ホストIPアドレスやポートの情報が表示される。
boxを削除。
vagrant box remove BOX名
仮想PC再起動。
vagrant reload
仮想PCを削除。
vagrant destroy
[ ツッコむ ]
以上です。