FreeBSD QandA 435
Q. ブート時にときどき
calcru: negative time: -??? usec
(??? は数字) というメッセージが出るのですが、これはどういう意味でしょ
うか?
A. 少なくとも FreeBSD 2.2-RELEASE〜FreeBSD 2.2.7-RELEASE でこの症状が
報告されています。
FreeBSD ではブート時に CPU のクロック周波数を検出します。例えば 133MHz
の Pentium なら下記の様に表示されるはずです。(周波数は、数 % の誤差を含みます。)
CPU: Pentium (132.63-MHz 586-class CPU)
ところが、一部のマシンでは 下記の様に誤って 大きく異なった周波数で検出される
ことがある様です。
CPU: Pentium (29.17-MHz 586-class CPU)
この様な場合に問題のメッセージが表示されます。この現象については 原因が正確
には特定されておらず、根本的な解決方法もわかっていません。この現象が発生して
いる時には、時間計測が異常になるようで、
select(2)が、失敗して mule が、入力を受け付けなくなったり、
shutdown 時に正常に filesystem をunmount できずに、次回起動時に fsck したり
します。
大部分の環境では、リブートしたときに下記の様なメッセージが出ていなければ
その後の動作に支障はありません。
calcru: negative time: -??? usec
なお、一部では、ブート時には問題ないが、突然表示されることがある様です。
このメッセージが表示されない様にするには /usr/src/sys/i386/isa/clock.c
というソースファイルの先頭に 下記の 定義を追加してから カーネルを再構築
すると 解決する様です。
#define CLK_USE_I586_CALIBRATION
#define CLK_CALIBRATION_LOOP
#define CLK_USE_I8254_CALIBRATION
ソースファイルを直接編集したくない場合は カーネルコンフィグレーション
ファイルに 下記の行を追加します。
options CLK_CALIBRATION_LOOP
options "CLK_USE_I8254_CALIBRATION"
options "CLK_USE_I586_CALIBRATION"
間違い・追加情報を見付けた場合は、
修正案の投稿のしかた を読んだ上で、
QandA@jp.FreeBSD.org まで
お知らせください。