はじめに
古いPCにvirtualBox 環境を作ろうとしたらいろいろハマったというお話。
構築準備
必要な部品を揃えます。
- VirtualBox+vagrant(CentOS)
VirtulBox
下記からダウンロード
vagrant
下記からダウンロード
構築開始
windows に仮想マシン関連のファイルが作成されるディレクトリを作成
vagrantを初期化
c:\> mkdir vmbox
c:\> cd vmbox
c:\> vagrant init
vagrant設定用のファイル (Vagrantfile)が作成されるのでこれを修正
# config.vm.box = "base"
config.vm.box = "puphet/centos65-x64"
この修正により、centos 6.5がインストールされます
(実はすでにここに落とし穴があった)
c:\vmbox> vagrant up
ダウンロードされて起動を開始します
エラー発生
OSの起動をしようとするところでrubyが connection_nonlock というエラーメッセージを出して止まってしまいました。
この vagrant up というコマンドでは、コマンドラインで動いているため、どのような状況になっているのかが分かりません。
が、実は インストールある VirtualBox のアプリを起動すればこれを見ることが可能です。
今回の場合、仮想マシンの起動状況を見てみると、そもそもゲストOSが起動していませんでした。インストールに指定した Centosの 64bit版が ホストマシンでは起動できないのが原因でした。(どれだけ古いマシンかばれてしまう)
再度インストールするため 下記で 32bit版をさがします
bento/centos-6.7-i386 というのがありましたのでvagrant設定用のファイル (Vagrantfile)を修正
# config.vm.box = "base"
config.vm.box = "bento/centos-6.7-i386"
再度、仮想マシンを起動するわけですが、このとき仮想マシンが中途半端に立ち上がった状態になっているのでこれを止めてから 再度起動させます
c:\vmbox> vagrant halt
c:\vmbox> vagrant up
次に止まったのが ssh の設定を行っているところで下記のエラーで止まってしまいます
default: Warning: Remote connection disconnect. Retrying...
default: Warning: Remote connection disconnect. Retrying...
C:/HashiCorp/Vagrant/embedded/lib/ruby/2.2.0/socket.rb:60:in `connect_nonblock':Invalid atgument - onnect(2) for 127.0.0.1:2222(Errno::EINVAL)
そもそも、接続ができずにリトライを繰り返しています。
これも前述の通り VartualBoxを起動しながら状況を確認。
すると、OSがまだ起動を終わっていないことが分かり愕然。
気長に起動するまで待ったのち、コマンドラインから ssh の設定を行います。これにより、sshの設定が表示されます
c:\vmbox> vagrant ssh
Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: C:/vmbox/.vagrant/machines/default/virtualbox/private_key
c:\vmbox>
ここまでくれば、CentOS環境での作業になるので問題解決。
結局
新しい情報見ながら、古い環境で何か作ろうとするとハマるというおちです
まあ、こんなことにはまる人も少ないと思いますが、せっかく時間を消費したので備忘録として残しておきます。
参考
この本を参考に構築しました。
JS+Node.jsによる Webクローラー/ネットエージェント[開発テクニック]