FAQ

Q.1 時計が進む

SMP環境だと、CPUクロックを誤認識するようです。そのため、時計が狂ってしまいます。

FreeBSDの時計は、kern.timecounter.hardwareで選択された Timecounterの値を使います。Rv20/Rs20, RvII26/RsII26の場合は、i8254になっているハズです。i8254の値は、machdep.i8254_freqから参照や変更ができます。そこで、この値を直接変更することで、時計の進み具合を速くしたり遅くしたりできます。ntpdateを使いながら、適切な値を設定してください。

筆者の環境では、以下のように設定することで時計が正常に動くようになりました。

# dmesg | head
Copyright (c) 1992-2005 The FreeBSD Project.
Copyright (c) 1994-2005 FreeBSD(98) porting team.
Copyright (c) 1992  A.Kojima F.Ukai M.Ishii (KMC).
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD 4.11-RELEASE-p16 #0: Wed Sep 13 18:51:03 JST 2006
    furusawa@nextfoods.jp:/usr/src/sys/compile/SMP
Timecounter "i8254"  frequency 1996800 Hz
CPU: Pentium Pro (161.65-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x619  Stepping = 9

# sysctl kern.timecounter.hardware
kern.timecounter.hardware: i8254

# sysctl machdep.i8254_freq
machdep.i8254_freq: 1996800

# sysctl machdep.i8254_freq=2456500
machdep.i8254_freq: 1996800 -> 2456500

Q.2 質問を追加してください