Linux

VirtualBoxでゲストOSのシステム時間を狙った日付に変更する方法

先日、VirtualBoxの中で使っているWindowsの時間を巻き戻したり早送りしたりしたいなあと思いました。
それについての方法はこちらの
VirtualBoxでゲストOSの日時を変更する方法 – デバッグな日々
にて知る事ができました。ありがとうございます。

文中で実行形式が.exeとなっていることから、この記事を書かれた方のVitualBox実行環境はWindowsのようですが、Linuxでも同様のコマンドで問題ありませんでした。

さて、時間をずらす事ができるのが確認できたので、これをもっと使いやすくしたいと思います。

RubyのDateを使って経過日数を計算するプログラム

という事でさくっと作ってみました。


#!/usr/bin/ruby
#setday.rb

require "date"

d1 = Date.today
#日時指定
d2 = Date.new(2015, 7, 5)
dif = d1 - d2

#60000msec * 60min * 24hour = 86400000
print (dif.to_i * 86400000 * -1).to_s

簡単に説明すると、d1に本日の日付が入ります。
d2に指定日の日付が入ります。d2からd1を引くと、指定日からの経過日数を得る事ができます。ここでは2015/07/05にセットしたいと思います。
あとは一日86400000msecですので、これに経過日数をかけて指定日までの巻き戻し時間(ms)を得ます。

*-1しているのは、ゲストOSの時間を巻き戻すには負の値が必要だからです。
いわずもがな時間を早送りするには正の値で指定します。

さて、このプログラムを実行すると
-4320000000 という数字を得る事ができました。(2015/08/24現在)

VirtualBoxのゲストOSのシステム時間を変更する

こいつを使って、VirtualBoxのシステム時間を設定します。


VBoxManage modifyvm "ゲストOSの名前" --biossystemtimeoffset "$(./setday.rb)"

確認するには


VBoxManage showvminfo "ゲストOSの名前" | less

でTime offset:の項目を確認してください。
プログラムで取得した値がセットされていれば出来上がりです。

あとはゲストOSを立ち上げて、システム時間を確認すると指定した日付になっていると思います。

ちなみにセットした時間はTime offsetの名の通り、時間をずらしているだけです。
後日またゲストOSを同じ日付にしたい時には、このプログラムをその都度実行してあげる必要があります。

それでは、また。

Linux mint で VNC接続前のページ

linuxにbowerをインストールするときにハマった話次のページ

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

Twitter

PAGE TOP