2013-10-21 53 views
40

我使用VirtualBox運行基於Ubuntu 12.04的Vagrant內部框。到目前爲止,一切都很好 - 除了一件事情:如何在VirtualBox內同步主機喚醒時間?

讓我們假設虛擬機正在運行。然後,主機進入待機模式。再次喚醒後,虛擬機仍在運行,但內部時鐘在主機關閉時繼續停止。因此,這基本上意味着:將主機休眠15分鐘,再次喚醒,然後VM的內部時鐘延遲15分鐘。

我該如何解決這個問題(由於顯而易見的原因,手動設置時間不是一個選項;-))?每當主機系統改變其狀態時,是否有辦法在Vagrant VM內部運行腳本?

我讀過documentation,默認情況下,VirtualBox Guest Additions每隔10秒與主機同步一次。顯然這沒有發生,但我找不到任何禁用它的地方。那麼有什麼想法?

PS:Guest Additions已安裝並且與正在使用的VirtualBox版本相匹配。

+0

您可能會發現[答案](https://superuser.com/questions/463106/virtualbox-how-to-sync-host-and-guest-time)有用。 –

回答

47

這裏的文檔缺少一些細節。

什麼VirtualBox每10秒只是輕微的adjustement(如0.005秒)。只有當時差達到閾值(默認20分鐘)時,纔會執行「真實」重新同步。

可以縮小thresold(即10秒)用下面的命令:

VBoxManage guestproperty set <vm-name> "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold" 10000 
+1

是否有可能以某種方式在'Vagrantfile'裏面指定這個? –

+4

好吧,我想到了:'vb.customize [「guestproperty」,「set」,:id,「--timesync-threshold」,10000]' –

+27

@GoloRoden感謝'vb.customize',但參數錯了。正確的命令是'vb.customize [「guestproperty」,「set」,:id,「/ VirtualBox/GuestAdd/VBoxService/- timesync-set-threshold」,10000]' – jbasko

1

您可以在虛擬機中安裝VirtualBox Guest Additions,以便通過VB自動同步時間。

4

我舉一個其他溶液同步來賓&主機之間的時間,而無需安裝VirtualBox的來賓除了:

  1. 在您的客人上安裝ntp,並在/etc/ntp.conf中對這些行進行註釋:

    disable auth 
    broadcastclient 
    

然後,重新啓動ntpservice ntp restart

  • 主機上

    主動廣播:

    • 對於Linux用戶,請編輯/etc/ntp.conf文件,並配置廣播(你必須改編IP):

      broadcast 192.168.123.255

    • 對於Windows用戶,請激活「Windows Time」服務。然後,您可以read this page將其配置爲播出時間

    然後,在主機重啓時間服務。

  • 2

    ,我讓時間同步工作,我不得不這樣做:

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

    原來的時間同步。出於某種原因,這是關閉的。

    +0

    一樣。謝謝!!!!! –

    14

    總結@zilupe和@Slobodan科瓦切維奇的答案,解決方案是增加以下到Vagrantfile

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

    當不同步變得這將每次同步時鐘> 1秒(1000毫秒)

    +0

    在Linux的情況下,我還建議禁用'ntp服務'以防止不斷需要同步。 RHEL'sudo chkconfig ntpd off'和'sudo service ntpd stop' Ubuntu:'sudo update-rc.d -f ntp remove'和'sudo /etc/init.d/ntp stop' – fyrye

    2

    我發現了一個解決方案:

    1. 安裝用ntpdate
    2. 加 「s」 是用ntpdate權限,這使得非root用戶以root身份運行ntpdate:sudo chmod u+s /usr/sbin/ntpdate
    3. ~/.bashrc添加一行:ntpdate -u ntp.ubuntu.com

    之後,每次登錄到Linux系統時,時間會同步一次。