概要
VirtualBoxはゲストOSを起動した際にホストOSの時刻をゲストOSの時刻として設定します。
普段は便利な機能ですが、年月関連のテストをする際は余計な機能となるため任意の時刻を設定する方法を解説します。
(VirtualBox 2.2.4~4.1.2で確認)
以下の方法では同期を停止して無効にすることは出来ませんが、ゲストOS起動前に設定することにより(Guest Additionのインストールの有無にかかわらず)ほぼ同様の環境になります。
準備
本作業の前に、まずはゲストOSが持っている時刻補正機能を停止します。Windows系の場合、Windows Timeサービスなどを停止します。Unix系の場合はntp関連の機能を停止します。
(Windows7 以降ではコントロールパネルの時刻設定 – インターネット時刻 より設定できます)
手順
Windowsのコマンドプロンプトより、以下のコマンドを実行します。
VBoxManage modifyvm "仮想マシンの名前" --biossystemtimeoffset 相対時間
※バージョン 3.1あたりから、コマンドラインオプションが”-“から”--”に変更になっています。
※Windows系では VboxManage.exe のフルパスを指定する必要があります。(例:C:\Program Files\Oracle\VirtualBox\VBoxManage )
仮想マシンの名前 欄にはあなたがつけた仮想マシンの名前(普段一覧表に表示されるもの)を指定します。
相対時間 欄にはホストOSの時刻に対してのゲストOS側の相対時間をミリ秒単位で設定します。
過去を設定する場合は数字の前に-(マイナス記号)を付けます。
数年の差も設定できますが桁数が大きくなりますので頑張って計算してください。
ちなみに1日は86400000ミリ秒、1年は31536 000000ミリ秒です。
以上で設定は終わりです。
設定値の確認方法
以下のコマンドを実行すると、現在の設定値が確認できます。
vboxmanage showvminfo “仮想マシンの名前“
Time offset: 欄に表示されている値(ミリ秒単位)が相対時間です。
補足
・この設定はスナップショットの破棄などの影響を受けます。設定したらなるべく新規スナップショットを作っておきましょう。
・Windows PowerShell では構文解析の関係でこのコマンドは使えません。cmd.exe を使いましょう。