528日の記事で初めてPortable VirtualBoxを使いました。これまではVMware PlayerCentOSを入れ、Qt+Rでツールを作ったりしてきましたが(参考:前ブログのQtタグリスト)、4月末ころVirtualBoxに非公式ながらポータブル版があると知り、試したら結構使えそうなので仮想PCはすっかりこちらに乗り換えました。

今日は、VMware Player上のCentOS 6.6仮想マシンをPortable VirtualBoxに移した経過を書きます。実行環境はWindows 7 32bit + Portable VirtualBox 4.3.6。下は、仮想マシン内で昨年から作っていたQt + PostgreSQLの簡易クライアントを起動してテストしたところ。
Contents

Portable VirtualBoxの概要、インストール、使うバージョンなど
ウェブサイトはこちら、インストーラは過去バージョンも含めArchiveにあり、その中から今回はVirtualBox 4.3.6用を使いました。というか4月末にこれを知った当初、まずVirtualBox 4.3.18用(これが当時の最新版)を使って古いIE用のWindows仮想マシンを作ったものの起動せずorz。ウェブ検索すると本家のVirtualBox 4.3.14以降でいろいろ不具合があるらしく、バージョンを戻す方がいいとの情報が。で試しに一つ前のバージョン4.3.6用を使ったら普通にWindowsゲストが起動したので、そのままずっと使い続け、特に問題は出ていません。

環境によっては、
電脳スピーチblog : Portable-VirtualBox4.3.12に改変してみるのように4.3.6の方が不安定との報告もあり、詳細不明。当面このまま使い、何か問題が出たら別途書きます。

インストールは
jettyz.comさんの記事(2015214日)が分かりやすいです。書くべき順が前後しましたが、概要としては文字通りVirtualBoxをポータブルに、レジストリを使わず実行ファイル群を自由に移動でき、外部ディスクでも持ち運べるもの。ただし使えるユーザ権限は限られ(自分の環境では管理者権限ユーザのみ動作)、またネットワーク設定によっては、開始時にネットワークアダプタのドライバをインストールし終了時にアンインストールするという力技をやるので、普通のポータブルアプリとはずいぶん違う面もあります。

でも、ネットワーク設定がNATならそういう強引なことはせずにゲストOSからインターネットへつながり、Guest Additionsを入れればホストOSとのフォルダ共有可能、またポートフォワーディングを使えばホストOSからSSHPostgreSQL等への接続も可能。このへんの詳細はいずれ別記事にします。ともかく結構使える仮想マシンをポータブルに持てるのが、Portable VirtualBoxの魅力です。


仮想マシンのVMDKファイル(複数分割)をPortable VirtualBoxで読み込む
以下、画像中心に経過をメモ。まず「HDDなし」のCentOS仮想マシンを新規作成します。三つ目の画像のとおり「HDDなしだとOS入れられないよ?」との警告が出ますが、そのまま続行。


仮想マシンを作ったら、マシンと同名のフォルダがどこかにあるはず。通常のVirtualBoxでは、たぶんシステムドライブのユーザフォルダあたりになると思いますが、ポータブル版なので実行ファイルの下の方を探します。自分の場合、[インストール先/data/.VirtualBox/Machines]にありました。その中の.vboxファイルが仮想マシン全体のメタデータ。同じ場所に、VMware Playerで使っていたVMDKファイルをコピーします。(別の場所でもいいですが、この方が管理しやすいので)
72日追記:上記パスでdataが重複してたのを直しました


次に仮想マシンの設定画面を開き、手動でディスクを追加。その際「既存のディスクを選ぶ」で、上でコピーしたVMDKファイルを選択します(VMDKが複数ありますが、とりあえず先頭のを選んだらOKだった)。問題なければ、三つ目の画像のようにHDDとして追加されます。この状態から仮想マシンを開始し、あっさり起動。まず移行の第一段階終了です。元の仮想マシンにVMware Toolsが入ってるままの状態でしたが、特に問題ありませんでした。


仮想マシンのディスクを1つのVDIファイルに変換
このまま使ってもいいですが、ディスクが複数のVMDKファイルに分かれているのを、単一のVDIファイルに変換してみます。仮想マシンが動いている状態で、ファイルメニューの一番上を開いてメディア管理画面を起動。いま仮想マシンのディスクになっているVMDKを選んでVDI形式にコピーすることで、自動的に単一のVDIに。最初は仮想マシン停止の状態でやってみましたが何か警告が出て、起動して作業したら警告なくできました。

いったん仮想マシンを閉じ、最初にVMDKディスクを指定したのと同じ設定画面を開き、作成されたVDIに指定し直します。これで普通に再起動でき、ディスクの変換が完了しました。もうVMDKは不要なので、先ほどと同じメディア管理画面を開いてRemove。


ネットワーク設定、VirtualBox Guest Additionインストール
元のVMware Player上でNATにしていて、移行後もNATになっており特に設定せずインターネットにつながりました。次に、共有フォルダを使うのに必須なGuest Additionを入れます。

普通はPortable VirtualBoxのインストール先の下にvboxadditionsというフォルダができ、その中にGuest AdditionCDイメージISOファイルがあると思いますが、仮想マシン作成・削除を繰り返すうちにISOも消えることがあるようです(というか自分の場合、消えてた)。でも下記からダウンロードできるので心配なし。

»http://dlc-cdn.sun.com/virtualbox/4.3.6/index.html »VBoxGuestAdditions_4.3.6.iso

ここでCDをマウントしてインストールしたら、エラーが出て駄目でした。で、下記と同様にカーネル更新とパッケージ追加して再起動したら出来ました。情報ありがとうございますm(_)m

»Little Braver : CentOSGuest Additionsをインストールしたときのエラー対処方法
# yum -y update kernel
# yum -y install kernel-devel kernel-headers dkms gcc gcc-c++

上が終わったら仮想マシンを再起動(まだCDをセットしてなければいったん終了し、下の画像のようにセットしてから起動)します。最初はコンソールでインストールしようと思いましたが何故かCDをマウントできないのでGUIを立ち上げ、デスクトップに現れたCDを右クリックして開始。OpenGL以外はOKで、共有フォルダを作れるようになりました。


ホストOSにあるQt + PostgreSQLアプリのフォルダを共有し、仮想マシン側で実行した様子が、冒頭の画像(↓ 再掲)。VirtualBoxの共有フォルダをAuto Mountに設定しておくと、例えばhogeというフォルダ名は仮想マシンの/media/sf_hogeに自動的にマウントされて便利です。詳細は下記を参照。

»yk5656 diary : VirtualBoxにとりあえずインストールしたCentOSを少し便利にしておく