FreeBSD QandA 435

FreeBSD QandA

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 まで お知らせください。