FreeBSDをインストールしたときマシンの時刻はUTC(GMT)なのかローカル(JST等)なのか
選ぶ場面がありますよね?UTCでないを選ぶと/etc/wall_cmos_clockが作成され、UTCなら
削除されます。同時に選んだタームゾーンは/etc/localtimeに設定されます。これがシステム
のデフォルトのタイムゾーンになります。(/usr/sbin/tzsetup)
マルチユーザモードになるときadjkerntz -iを起動します。これは/etc/wall_cmos_clockが
ある場合にタイムゾーンに合わせてシステムの時刻をUTCに合わせて、その差の秒数を
sysctl machdep.adjkerntzに設定してsysctl machdep.wall_cmos_clockに1を設定します。
カーネルはsettimeofday(2)の中でmachdep.wall_cmos_clockが0以外の場合machdep.adjkerntz
秒分ずらしてCMOSの時刻を設定するのです。
ざっと見てこんな感じのようです。。。