VirtualBoxを使用してVagrant内でUbuntu 12.04ベースのボックスを実行しています。これまでのところ、すべてが正常です-1つのことを除いて:
VMが実行されていると仮定します。その後、ホストはスタンバイモードになります。再び起動した後、VMはまだ実行されていますが、ホストがダウンしたときに停止した場所で内部クロックが継続するため、これは基本的には、ホストを15分間スリープ状態にしてから再度起動すると、VMの内部クロックが15分遅れることを意味します。
どうすれば修正できますか(手動で時間を設定することは明らかな理由でオプションではありません;-))?ホストシステムが状態を変更するたびに、Vagrant VM内でスクリプトを実行する方法はありますか?
ドキュメント を読みましたが、デフォルトではVirtualBox Guest Additionsは10秒ごとにホストと時刻を同期します。どうやらこれは起こっていませんが、それが無効になっている場所を見つけることができません。アイデアはありますか?
PS:Guest Additionsがインストールされ、使用されているVirtualBoxのバージョンと一致します。
このドキュメントには詳細がありません。
VirtualBoxが10秒ごとに行うことは、わずかな調整(0.005秒など)です。時間差がしきい値(デフォルトでは20分)に達した場合にのみ、「実際の」再同期が行われます。
次のコマンドを使用して、しきい値を減らすことができます(つまり、10秒まで)。
VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000
@zilupeと@Slobodan Kovacevicの回答を要約すると、解決策はVagrantfile
に以下を追加することです。
config.vm.provider 'virtualbox' do |vb|
vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end
これにより、desyncが> 1s(1000ms)になるたびにクロックが同期されます
Virtualboxゲスト追加機能をインストールせずに、ゲストとホストの間で時間を同期する別のソリューションを提供します。
ゲストにntpをインストールし、/etc/ntp.conf
の次の行をコメント解除します。
disable auth
broadcastclient
次に、service ntp restart
でntp
を再起動します
ホスト上のアクティブなブロードキャスト:
Linuxユーザーの場合、/etc/ntp.conf
ファイルを編集し、ブロードキャストを構成します(IPを適合させる必要があります)。
ブロードキャスト192.168.123.255
Windowsユーザーの場合、「 Windows Time 」サービスをアクティブにします。その後、 このページを読む でブロードキャスト時間を設定できます
次に、ホストでタイムサービスを再起動します。
Timesyncを機能させるには、これを行う必要がありました。
vboxmanage setextradata «machine-name» "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0
Timesyncをオンにします。何らかの理由でオフになった。
私は解決策を見つけました:
Sudo chmod u+s /usr/sbin/ntpdate
~/.bashrc
に1行追加:ntpdate -u ntp.ubuntu.com
その後、Linuxシステムにログインするたびに、時刻が1回同期されます。
virtualBox Guest AdditionsをVMにインストールして、VBによって時刻を自動的に同期できます。