VirtualBox内VMの時計がずれるとき

  • 投稿日:
  • 更新日:2017/12/30
  • by
  • カテゴリ:

我が家ではVirtualBoxにTinyCoreを入れて稼働させていますが、最近その時計が頻繁に狂うようになりました。

その狂い方は結構ハンパないもので、一週間も放置するとTinyCoreの時計は明日になってしまうくらいです。

いくら時代の先端を行きたいとはいっても、時間ばかり先に行かれても困るので、何とかすることにしました。

NTPで何とかする

症状としては、VirtualBox内のバーチャルマシンとして運用しているTinyCoreの時計が進んでしまう、というものです。

ホストマシン側の時計は特にずれていません。

色々調べてはみたものの、原因はいまいちよくわかりません。

そこで、対処療法ではありますがNTPを使うことにしました。

NTP (Network Time Protocol)はインターネット上で時刻の同期を行うために使われるプロトコルです。日本だとntp.nict.jpなどで時刻が提供されており、そこにコマンドで問い合わせを行うことによりマシンの時間を同期させることができます。

$ tce-load -wi ntp
$ sudo ntpdate ntp.nict.jp

今回はこのntpdateコマンドを定期実行させて時刻を同期するようにしました。

/var/spool/cron/crontabs/root

ファイルに以下のエントリを追加します。

59 */2 * * * /usr/local/bin/ntpdate ntp.nict.jp | logger -t ntpdate -p local0.info

ここでは、2時間ごとの59分(0時59分、2時59分、...)に、ntp.nict.jpに対してntpdateを発行し、結果はsyslogに出力しています。

ntpdateにはsyslogに出力するオプション(-s)があるのですが、私の環境ではsyslogdを入れ替えていたりしてうまくいかなかったので上記のようにしています。

この設定を行ってcrondを再起動(マシンを再起動でもよい)してコマンドが実行されたあとにsyslog (/var/log/messages など)をみると、次のようなログが吐かれていました。

Dec 12 20:50:23 tiny local0.info ntpdate: 12 Oct 20:50:23 ntpdate[10339]: step time server 133.243.238.243 offset -527.167427 sec

(赤字部分はあとで着色)

なんと2時間でマイナス500秒以上も調整されている! そりゃ次の日になってしまうわけだ。

そのうちもう少しきちんと見ないといけないかもしれませんが、まずはこれで。

こちらもよく読まれています