VirtualBox設定備忘録
メインマシン(ThinkPad X61 Tablet)のSSDをIntel X25-M Mainstream SATA SSD (80GB)から IO-DATA SSDN-ST256Bに交換しました*1。
I-O DATA Serial ATA対応内蔵2.5インチSSD 256GB SSDN-ST256B
- 出版社/メーカー: アイ・オー・データ
- 発売日: 2009/11/27
- メディア: Personal Computers
- クリック: 26回
- この商品を含むブログ (2件) を見る
そこで必要となるのは仮想マシン環境でして、以前から、VMware Workstation, coLinux, VMware Player, VMware Server, そして今回のVirtualBoxと一通り利用してきました。これまでは、64bitホストでも動き、さらにゲストをホストと同期して起動/シャットダウンするために、仮想マシンをWindowsのサービスとして設定できるVMware Serverをずっと使用してきました。しかし、VMware Serverには、いくつか解決されそうにない問題があります。
VMware ServerをノートPCで運用する、というのは想定外の利用法であるとはわかっているので、理解できますが,結構ストレスが溜まっていました。
VMware Serverの売りである、Web AccessやVMware Server Consoleを利用することで、リモートホストからもゲストの管理ができるという点は、ノートPCで運用するにあたっては不要でした。
VirtualBoxの情報も増えてきたので調べてみると、VirtualBoxはコマンドラインからほとんどすべての設定・操作をすることができるため*7、簡単に自動起動/自動シャットダウンスクリプトを書くことができます。そのため、SSDの入れ替えを機に乗り換えてみました。また、VirtualBoxだとWindows 7ホストにも対応していますし、定期的にアップデートもされています*8。
インストールしたのは、リモートデスクトップ接続が使えるPUELなVirtualBox 3.2.6です。ネットワークをどうするかは迷いましたが,ホストのネットワーク接続の頻繁な変更への対応と、ホストからゲストへのアクセスを共存することを目的として、結局以下のように2つ接続を考えることにしました。
- ネットワークアダプタ1(eth0)-NAT
- ネットワークアダプタ2(eth1)-ホストオンリーネットワーク
なお、VirtualBoxのNATではDNS変換もしてくれるのですが、とても遅いので、ゲストではGoogleのDNS(8.8.8.8)を利用することにしました*9。平均的にはこちらが早いです。ゲストにDNSキャッシュサーバとしてunboundを立てるのも選択肢にのぼるかと思います。
自動起動スクリプトと自動シャットダウンスクリプト
バッチファイルやVBScriptのサンプルはいろいろありますが、コマンドプロンプトを出さないようにしたい、という希望と、JavaScriptの時代がきていると勝手に思っているため、JScriptで書きました。これらをWeb上の他の多くのスクリプトと異なり、エスケープをきちんと行ってLong File Nameを使っています。
自動起動スクリプトは次のとおりです。Runの最後の引数にfalseを与えることで、waitせずにホストに制御を戻しています。このスクリプト仮想マシン名はDebianにしています。
var WshShell = new ActiveXObject("WScript.Shell"); WshShell.Run("\"C:\\Program Files\\Oracle\\VirtualBox\\VBoxHeadless.exe\" --startvm \"Debian\"", 0, false); WshShell = null;
自動シャットダウンスクリプトは次のとおりです。ゲストがACPIによる自動シャットダウン可能にしておく必要があります。Runの最後の引数をtrueにすることで、シャットダウン終了までスクリプト終了をwaitさせることができます。
var WshShell = new ActiveXObject("WScript.Shell"); WshShell.Run("\"C:\\Program Files\\Oracle\\VirtualBox\\VBoxManage.exe\" controlvm \"Debian\" acpipowerbutton", 0, true); WshShell = null;
ファイル共有
Windows側にはPUELなVirtualBoxをインストールしたのですが、ゲスト側のモジュール群は、アップデートが面倒なため、Debianオフィシャルに存在するvirtualbox-ose-guest-dkmsを入れました。だいたいの操作に問題はなかったのですが、ファイル共有を利用しようとしたところ、ゲスト側でmountした瞬間にカーネルパニックでゲストが落ちました。詳しく追うのは面倒なので、ファイルはいつもどおりsambaで共有しています。
細かな点
- VirtualBoxのGUIを開いたときにHeadlessなゲストが電源OFF状態と誤認されることがある
- PuTTYかリモートデスクトップで作業する上では無問題
- 電源Onボタンは機能しない(のでやはり無問題)