57

VirtualBox を使用して、Vagrant 内で Ubuntu 12.04 ベースのボックスを実行しています。これまでのところ、すべて問題ありません - 1 つのことを除いて:

VM が実行中であると仮定しましょう。その後、ホストはスタンバイ モードに移行します。再びウェイクアップした後、VM は引き続き実行されますが、ホストがダウンしたときに停止した場所から内部クロックが継続します。つまり、これは基本的に次のことを意味します: ホストを 15 分間スリープ状態にし、再び起動すると、VM の内部クロックが 15 分遅れます。

これを修正するにはどうすればよいですか (時間を手動で設定することは明らかな理由からオプションではありません ;-))? ホスト システムの状態が変わるたびに、Vagrant VM 内でスクリプトを実行する方法はありますか?

デフォルトでは、VirtualBox Guest Additions が 10 秒ごとにホストと時刻を同期するというドキュメントを読みました。どうやらこれは起こっていませんが、無効になっている場所が見つかりません。アイデアはありますか?

PS: Guest Additions がインストールされ、使用されている VirtualBox のバージョンと一致します。

4

6 に答える 6

61

ドキュメントには、ここでいくつかの詳細が欠けています。

VirtualBox が 10 秒ごとに行うのは、ほんのわずかな調整 (0.005 秒など) です。時間差がしきい値 (デフォルトでは 20 分) に達した場合にのみ、「実際の」再同期が行われます。

次のコマンドを使用して、しきい値を (つまり、10 秒に) 減らすことができます。

VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000
于 2013-10-21T10:48:24.147 に答える
28

@zilupe と @Slobodan Kovacevic の回答を要約すると、解決策は以下を に追加することVagrantfileです。

config.vm.provider 'virtualbox' do |vb|
   vb.customize [ "guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 1000 ]
end

これにより、desync が 1 秒 (1000 ミリ秒) を超えるたびにクロックが同期されます。

于 2016-06-21T13:45:31.107 に答える
6

Virtualboxゲストの追加をインストールせずに、ゲストとホストの間で時間を同期する別のソリューションを提供します。

  1. ゲストに ntp をインストールし、次の行のコメントを外します/etc/ntp.conf

    disable auth
    broadcastclient
    

次に、で再起動ntpしますservice ntp restart

  1. ホストでアクティブなブロードキャスト:

    • Linux ユーザーの場合は、/etc/ntp.confファイルを編集してブロードキャストを構成します (IP を調整する必要があります)。

      ブロードキャスト 192.168.123.255

    • Windows ユーザーの場合は、「 Windows Time」サービスを有効にします。次に、このページを読んでブロードキャスト時間に設定できます

    次に、ホストでタイム サービスを再起動します。

于 2015-12-10T09:11:56.203 に答える
4

timesync を機能させるには、次のようにする必要がありました。

vboxmanage setextradata «machine-name» "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled" 0

タイムシンクをオンにします。なぜか切れていました。

于 2016-04-30T20:23:34.003 に答える