為什麼我的 Debian Hyper-V 用戶端在主機從睡眠狀態喚醒後不更新時間?

為什麼我的 Debian Hyper-V 用戶端在主機從睡眠狀態喚醒後不更新時間?

我有一台安裝並啟用了 Hyper-V 的 Windows 10 實體(筆記型電腦)主機,但我遇到了一個問題,對於相當普通的 Debian 9 來賓安裝,在主機進入睡眠狀態一段時間後時鐘不會更新,並且然後再次被喚醒(我假設來賓與主機一起暫停)。

據我了解,這個問題應該由 Hyper-V 整合服務輕鬆解決,該服務在虛擬機器設定(啟​​用所有整合服務)和來賓(hv_*載入所有模組)中啟用,其中一項服務同步時間並確保其保持最新狀態。

那麼,為什麼它在我的情況下不起作用呢?我沒有安裝 NTP,也不想安裝,部分是原則上的(專門解決 Hyper-V 問題),部分是因為來賓必須在沒有 Internet 連線和遠端主機服務的情況下工作。我的主機時區明確設定為 UTC(我經常使用筆記型電腦漫遊,既不需要也不希望將來賓與特定時區靜態關聯),並TZ根據需要使用變數。

我讀過 Microsoft 的許多頁面和一些 Altaro 文章,這些文章似乎非常有見識,但未能在這方面啟發我。我還在 Stack Exchange 網站上閱讀了許多答案,其中一半建議使用 NTP,另一半主要是關於其他內容或只是沒有提供所需的建議。

我知道,當主機從睡眠中恢復時,可能會有一些訊號不會在來賓上觸發(例如,如果您透過 ACPI 讓來賓進入睡眠狀態,就會發生這種情況),但這不應該是一個問題解決了嗎?

我可以在哪裡排除故障,以確保我可以可靠地合上筆記型電腦的蓋子(使其進入睡眠狀態)並期望以最新的時間戳返回給我的客人?

答案1

檢查一下:https://github.com/clearlinux/distribution/issues/39

可行的修復方法是停用所有其他時間服務並使用 chrony,而不是僅配置 LIS hyperv 時間來源 ptp0。

確保 LIS 時間源可透過以下方式取得:

ls /sys/class/ptp
ptp0

cat /sys/class/ptp/ptp0/clock_name 
hyperv

現在為您的發行版安裝 chrony 並檢查配置位置,然後建立與您的 ptp 相對應的配置?設備位置。

/etc/chrony.conf:

refclock PHC /dev/ptp0 trust
makestep 1 -1

這將允許 chrony 透過 hyperv ptp0 來源以一個大步驟修正系統時間。

透過以下方式可以將輪詢時間縮短至 4 秒(2 的冪):

refclock PHC /dev/ptp0 trust poll 2

PS:這似乎是 hyperv/LIS 中的一個錯誤/疏忽。

相關內容