noise

計算機科学や各種設定のメモ

VMware上のArchLinuxで時刻がずれる問題

VMware 上での Linux の時刻が起動するたびにずれているのでずっと不思議に思っていました。

いままで放置してきましたが、毎度 ntpdate で調整するのも面倒くさいので今日は何が原因か調べてみました。
今回、発生している問題は何故か現在時刻に+9時間されてしまうというものです。
なので時差に関する問題であると考えられます。

この問題は /etc/rc.conf で

HARDWARECLOCK="UTC" # または空白

HARDWARECLOCK="localtime"

としてやることで解決できます。

Linux では起動時に BIOS からの時刻を読みとってそのあとはOSが自前で時刻を管理し、終了時に BIOS に書き戻しているそうです。

原因は、OS としては UTC の時刻を終了時に書き戻してはいるものの、起動時に VMWareUTC としてホスト側の現在時刻をそのまま BIOS に書きこんでしまっているためだと思われます。

VMWareサスペンド機能を用いるとこれまた時刻がずれてしまうのですが良い方法があるといいなぁ。

[追記]
Hardware Clock はサスペンドしても正しい時刻であり続けるようなので

sudo crontab -e

として

*/1 * * * * /sbin/hwclock --hctosys

と書いてやればいいですね。

--hctosys オプションをつけて hwclock を実行すると Hardware Clock の値が System Time に読み込まれます。