[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:26694] Re: yet another tips for time adjust



佐野@浜松です。

# 何故かこのあたりのメールが jlug.ml.debian.users に流れなかった
# (or 自分のシステムにうまく入らなかった) みたいなので Web 経由で
# 取得。

  |  ・ From: NAKANO Takeo <nakano@xxxxxxxxxxxxxxxx>
  |  ・ Subject: [debian-users:26576] yet another tips for time adjust
  |  ・ Date: Wed, 24 Jan 2001 20:13:10 +0900
  | 
  |  /etc/init.d/hwclock.sh を使うと、hwclock でこのドリフト分を
  | 補償してくれます。同スクリプト中の --adjust の行をアンコメント
  | して有効にすると、ドリフト補償機能が有効になります。

もしこれを使うのなら、/usr/doc/util-linux/README.Debian.hwclock.gz にも
目を通しておくと良いでしょう。

Issues with hwclock --adjust:

hwclock has a facility to try to correct for systematic drift in the
hardware clock, accessed by hwclock --adjust. This facility is *dangerous*
because it has a severe drawback: it assumes that no program other than
hwclock --systohc will ever be used to change the hardware clock.

This assumption is often false, as many common utilities such as ntp,
ntpdate, chrony, as well as your computer's System Setup BIOS program, and
any other OS you have in your machine will change the clock.

Also, if hwclock --adjust is used, one must make sure the drift file
(/etc/adjtime) is deleted every time the system clock is set to a very
different value (even if you're using hwclock itself to do it!), or the
drift computation might become invalid and cause the hardware clock to be
incorrectly set the next time hwclock --adjust is used.

hwclock currently does not perform any sort of sanity checks in the values
it uses to compute the drift file, and will corrupt your clock time by
potentially very large amounts if anything goes wrong.

Don't use the hwclock --adjust facility, refer to alternate (and much safer)
programs such as ntp, chrony or adjtimex if you need precision timekeeping.

なんてことが書かれてます。どうも過去にこれに関連して bug report が
多数寄せられたのでデフォルトで --adjust をしない設定になったようです。

上記に書かれている点の他、緊急用の rescue システムで起動したり、
デュアルブート、トリプルブートで別の Linux システムを起動して
使うことがあったりする場合も注意が必要です。

ノート PC の場合、suspend/resume の際に CMOS クロックに依存して
時刻を取得したりするので、/etc/apm/event.d/ に 00hwclock として

#!/bin/sh
# set the system clock

# get Debian config information
. /etc/default/rcS

if [ -n "$UTC$GMT" -a "$UTC" != "no" ]; then
        GMT="-u"
fi

# support older Debian and non-Debian systems
if [ -x /sbin/clock ]; then
        CLOCK=clock
else
        CLOCK=hwclock
fi


if [ "$1" = suspend ]; then
        logger -t hwclock "$(hwclock -r)"
        $CLOCK --systohc $GMT
        logger -t hwclock "$(hwclock -r)"
elif [ "$1" = resume ]; then
        logger -t hwclock "$(hwclock -r)"
        $CLOCK --adjust $GMT
        logger -t hwclock "$(hwclock -r)"
        logger -t hwclock "$(date)"
        $CLOCK --hctosys $GMT
        logger -t hwclock "$(date)"
fi

なんてのを書いてあったりしますが、この場合は同じシステムが動いているので
あまり心配無いかなと考えてます。

再起動とかの場合は CMOS clock の設定が変更されてる可能性もあるので、
ちょっと用心したほうがいいかも。

  |   最初は /etc/adjtime を消しといて、以降ネットワークに接続するたびに
  | 
  | % ntpdate どこか
  | 
  | で時間もらってきて
  | 
  | % /etc/init.d/hwclock.sh reload
  | 
  | すると、CMOS の時刻合わせと同時に、補償情報が自動的に
  | /etc/adjtime に蓄積されていきます。後は必要に応じて
  | 
  | % /etc/init.d/hwclock.sh start
  | 
  | すれば、この補償分を含めてシステムクロックをセット
  | してくれます。(もちろんブート時も :-)

これも便利は便利なんですけどね。たまに狂うことがあるので、最近は
上記の suspend/resume 以外では --adjust を使わなくなりました。

  | # このスクリプト以外に CMOS クロックをさわるソフト
  | # ウェアがあるとまずいんですけど。

これが最大の問題ですね。

--
     # (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
    <kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)