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 シングルCPUなのに、普通のカーネル(GENERICなど)が動きません!

Rs20, RsII26は、APICに固定されているためです。これらの2機種では、SMPカーネルを使うことにより、動作する可能性があります(試したことはないですが、おそらく動くはずです)。Rv20, RvII26は、BIOSから従来の互換モードに設定することで、GENERIC kernelが立ち上がります。

Table.1 恐らく、こんな感じ...

CPUAPICGENERIC kernelSMP kernel
Single××
Single×
Dual××
Dual×

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