VirtualBox: ホストとゲストの時間を同期するにはどうすればいいですか?

VirtualBox: ホストとゲストの時間を同期するにはどうすればいいですか?

ゲスト VM の時刻がホストの時刻より 20 ~ 30 分ほど早いです。ゲストの時刻をホストの時刻と同じにするにはどうすればよいでしょうか。

答え1

Linuxホストの場合は、まずゲストマシンにDKMS(Dynamic Kernel Module Support)パッケージをインストールします(ソース):

$ sudo apt-get install dkms

次に、ゲスト システムに Guest Additions をインストールします。

Ubuntu 20.04以降

$ sudo apt-get install virtualbox-guest-utils

Ubuntu 18.04 以前

$ sudo apt-get install virtualbox-guest-additions

また、ここにはVirtualBox の時刻同期を調整するためのコマンド

答え2

以下の設定により、ゲストはホストの 1 秒以内の精度の時刻を安定して維持できます。これは、VirtualBox 4.3.26 を実行しているホストと、同じバージョンの VirtualBox Guest Additions を実行しているゲストでテストされています。VirtualBox 5.x に関しては、これまでのところこれらの構成変更を行う必要はありませんでした。時刻は自動的に同期されています。

参照:https://www.virtualbox.org/manual/ch09.html#changetimesync


ホスト上で VM を一覧表示し、関連する VM の名前を確認します。

$ VBoxManage list vms | awk '{print $1}'
"CentOS6"

ホスト上で、以下のコマンドを実行してゲストの時刻同期パラメータを設定します。まず$VMNAME適切な値を設定します。値に$VMNAMEスペースが含まれている場合は、当然引用符で囲む必要があります。

$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-interval" 10000
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust" 100
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore" 1
$ VBoxManage guestproperty set ${VMNAME} "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 1000

上記の時間パラメータの値は、10 の倍数に制限されています。timesync-set-threshold代わりに 10000 に設定したくなるかもしれませんが、トリガーされるとかなり急激な時間変更が発生する可能性があり、アプリケーションが壊れる可能性があります。


ホスト上で、ゲストの更新された関連値を表示します。これらはいつでも再確認できます。

$ VBoxManage guestproperty enumerate ${VMNAME} | grep timesync | sort
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-interval, value: 10000, timestamp: 1402110397618554000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust, value: 100, timestamp: 1402110777505446000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore, value: 1, timestamp: 1402110904964050000, flags:
Name: /VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold, value: 1000, timestamp: 1402110660162295000, flags:

ゲストで、すべての内部 NTP および関連するタイムキーピング サービスを停止して無効にします。これらは VirtualBox に干渉する可能性があるため、使用しないでください。CentOS 6 ゲストの場合:

$ sudo /sbin/chkconfig ntpd off
$ /sbin/chkconfig --list | grep ntp
ntpd            0:off   1:off   2:off   3:off   4:off   5:off   6:off
ntpdate         0:off   1:off   2:off   3:off   4:off   5:off   6:off

ゲスト上で、 という名前のサービスを再起動しますvboxadd-service。Guest Additions が以前にインストールされていた場合、このサービスはインストールされ、有効になっているはずです。CentOS 6 ゲストの場合:

$ /sbin/service vboxadd-service status
Checking for VBoxService ...running
$ sudo /sbin/service vboxadd-service restart
Stopping VirtualBox Guest Addition service                 [  OK  ]
Starting VirtualBox Guest Addition service                 [  OK  ]
$ /sbin/service vboxadd-service status
Checking for VBoxService ...running

ゲストの時刻がまだ同期されていない場合は、ゲストを再起動します。

答え3

Virtualbox ゲスト追加をインストールせずにゲストとホスト間の時間を同期する別の解決策を紹介します。

  1. ゲストに NTP をインストールし、 内のこれらの行のコメントを解除します/etc/ntp.conf
disable auth
broadcastclient
  1. ホスト上でブロードキャストを有効にします。Linuxユーザーの場合は、/etc/ntp.confファイルを編集して次の行を設定します。
broadcast 192.168.123.255 

Windowsユーザーの場合は、「Windows Time」サービスを有効にします。このページを読む放送時間を設定する

関連情報