這種現在大部分是因為機器內有多個時鐘,而 FreeBSD 選錯時鐘囉!
執行 dmesg(8),檢查一下有 Timecounter 字串的那幾行。最後一行是FreeBSD 選用的,通常是 TSC。
# dmesg | grep Timecounter
Timecounter "i8254" frequency 1193182 Hz quality 0
Timecounter "ACPI-safe" frequency 3579545 Hz quality 1000
Timecounter "TSC" frequency 350796127 Hz quality 800
Timecounters tick every 1.000 msec
可以執行 sysctl(3) 看一下 kern.timecounter.hardware 這個值做確認。
# sysctl kern.timecounter.hardware
kern.timecounter.hardware: ACPI-safe
BIOS 可能在一些情形下會更改 TSC 的時脈--有時候是因為在使用電池工作時會更改處理器的速度,另外也有可能是進入了省電模 式,可是 FreeBSD 並不會察覺到這些調整,而會發生時間增加或是減少的情形。
在上面的例子當中,我們看到還有 TSC 這個時鐘可以選擇,執行 sysctl(3) 用手動的方式將這個值寫入 kern.timecounter.hardware 中。
# sysctl -w kern.timecounter.hardware=TSC
kern.timecounter.hardware: ACPI-safe -> TSC
這樣應該就可以保持正確的時間了。
如果要讓這個更改的動作再每次開機時自動執行,在 /etc/sysctl.conf 裏加入下面這行。
kern.timecounter.hardware=TSC
2007年3月27日 星期二
[FreeBSD] 機器的時間有問題
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言