VirtualBoxで仮想OSの時刻・日付を変更する

時刻や日付が絡んだ処理を実装するときに過去(もしくは未来)の日付を設定したい、という時があります。しかしコードそのものに変更を加えると例えば本番環境でエラーが出てしまったりファイル間での処理が上手くいかないなど何かと問題になりそうなので、仮想OS自体の日付、時刻を変更してしまいます。 時刻を変更するコマンドは

date -s "11/02 18:01 2015"

のように指定すればOKです。ただしroot権限でないと実行できない可能性アリです。しかしCentOSなどではNTP(NetWork Time Protocol)サーバーと時刻同期する機能をデフォルトで持っていたりするので仮想サーバに立てたページを変更を加えてリロードしたり、しばらく時間が経つと勝手に現在時刻に戻してしまいます。そこでサーバの時刻同期する設定を変更してから上記コマンドで自分の好きな時刻に指定しましょう。 時刻同期させないコマンドは以下のコマンドです。これをVirtualBoxのインストールフォルダをカレントにして実行するか、フルパスでVBoxManage.exeを指定して実行します(Macでは/usr/binにあるので指定しなくて良いです)。

VBoxManage setextradata "自分のVMの名前" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 1

最後の1を0にすれば元通り時刻同期してくれます。このコマンドを実行して仮想OSを再起動させないと設定が反映されないのでご注意を…