WindowsにcapstanをインストールしてOSvを起動してみた
はじめに
オープンソースカンファレンス2014 Kansai@KyotoでOSvの何たるかをご教示頂きました。
(ざっくり、JVMの動作に必要なLinux APIをエミュレーションする超軽量なOSとのこと。)
調べるとWindowsとVirtualBoxと言う我が家のクラウド環境(?)もサポートされてるみたいなので、インストールしてみることにしました。
最終的にはマイクラサーバが動けば良いなと。
WindowsでOSvを動かしてみよう
あらかじめインストールしてあったもの
- Windows 7 Pro 64bit(OSv自体が64bitのみサポートみたいなので、32bit OSはアウトと思います。)
- SourceTree(内部gitを有効にしたもの) 1.5.2.0
- VirtualBox 4.3.12
Go言語をインストールする。
capstanはGoogle謹製のGo言語で書かれているため、http://golang.org/dlから、Windows版を入手します。
なんとなくお勧めされた64bit版をチョイス。
インストール先はデフォルトのc:\go\にしました。
SourceTreeでcapstanのリポジトリをクローンする。
https://github.com/cloudius-systems/capstanをクローンします。
8/3時点のHEADは、0.1.2 + 2014/7/29 4:38までのコミットでした。
作業用コマンドプロンプト起動用バッチファイルを作る。
capstanをインストール or 実行するためには、下記のプログラムにパスを通す必要があります。
- go.exe
- git.exe
- VBoxManage.exe
加えて、GOPATHにgo言語のルートになるフォルダを設定する必要があります。
毎回設定するのは面倒なのでバッチファイルにします。
・capstan_cmd.bat
set PATH=%PATH%;c:\go\bin set PATH=%PATH%;c:\Users\desktop\AppData\Local\Atlassian\SourceTree\git_local\bin set PATH=%PATH%;"c:\Program Files\Oracle\VirtualBox" set GOPATH=c:\go\ cmd
capstanのインストール
さて、ここからはコマンドプロンプトでの作業です。
さっきのバッチファイルからコマンドプロンプトを起動し、install.batを実行します。
c:\>cd \Users\desktop\Documents\capstan ←capstanをクローンしたフォルダ c:\Users\desktop\Documents\capstan>install c:\Users\desktop\Documents\capstan>set package=github.com/cloudius-systems/capst an c:\Users\desktop\Documents\capstan>for /F %i in ('git describe --tags ') do set version=%i c:\Users\desktop\Documents\capstan>set version=v0.1.2-4-gdb6eb7e c:\Users\desktop\Documents\capstan>go get github.com/cloudius-systems/capstan # github.com/cloudius-systems/capstan c:\go\src\github.com\cloudius-systems\capstan\capstan.go:64: too few values in struct initializer c:\go\src\github.com\cloudius-systems\capstan\capstan.go:95: too few values in struct initializer ・・・(同様のエラーが続く)
あらら、エラーです。
cliのバージョンダウン
エラーの原因はcapstanが使っているcliと言うパッケージでした。
StringFlag()メソッドに渡す引数の数が足りていない様です。
調べると、cliパッケージが8/3(今日やん・・・)にバージョンアップ(1.2.0)しており、その際にメソッドの仕様が変わったようです。
1.1.0にバージョンダウンして何とかします。
c:\Users\desktop\Documents\capstan>cd \go\src\github.com\codegangsta\cli\ c:\Go\src\github.com\codegangsta\cli>git checkout 1.1.0 Note: checking out '1.1.0'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b new_branch_name HEAD is now at 27ecc97... Merge pull request #112 from AudriusButkevicius/swap
再度capstanのインストール
c:\Users\desktop\Documents\capstan>install c:\Users\desktop\Documents\capstan>set package=github.com/cloudius-systems/capst an c:\Users\desktop\Documents\capstan>for /F %i in ('git describe --tags ') do set version=%i c:\Users\desktop\Documents\capstan>set version=v0.1.2-4-gdb6eb7e c:\Users\desktop\Documents\capstan>go get github.com/cloudius-systems/capstan c:\Users\desktop\Documents\capstan>go install -ldflags "-X main.VERSION v0.1.2-4 -gdb6eb7e " github.com/cloudius-systems/capstan c:\Users\desktop\Documents\capstan>
うまくいきました。
OSvの起動
引き続きコマンドプロンプトからOSvを起動します。
コマンド一発で仮想HDDイメージのダウンロードから起動までやってくれます。楽ちん。
VirtualBoxマネージャーのウインドウを開いておくと動的にVMがセットアップされていくのが見えて楽しいです。
C:\Users\desktop\Documents\capstan>capstan run -f 8000:8000 cloudius/osv Downloading cloudius/osv/index.yaml... 126 B / 126 B [=====================================================] 100.00 % Downloading cloudius/osv/osv.vbox.gz... 73.09 MB / 73.09 MB [===============================================] 100.00 % Created instance: cloudius-osv OSv v0.11 eth0: 10.0.2.15 [/]% ←OSvのプロンプト
うまく行ってないところ
VMが終了できない。
WebインターフェースからshutdownしたりVirtualBoxマネージャーからACPIシャットダウンしてもOSvが終了しません。
コンソールにはこんなメッセージ。
exception nested too deeply [backtrace]
例外が死ぬほど出てる感じ?
ブリッジモードで起動できない
capstanから-bオプションを使ってブリッジモードで起動しようとしてもVMが起動しませんでした。