HOME / Hardware

Hardware Clock と時間設定に関する FAQ / Tips

  • Hardware Clock と時間設定に関する FAQ / Tips
    • 時間設定に関する参照リンク
    • ハードウェアクロックとは何ですか?
    • ハードウェア・クロックを変更するには?
    • コマンドラインからの設定・操作
      • hwclock コマンドの概要(-help)
      • hwclock コマンド 実行例
      • directisa オプションについて
      • システムの現在時刻を知るには?
      • タイムゾーンを設定・変更するには?
      • 設定済みのタイムゾーンを確認するには?
    • GNOME 環境での時間合わせ
      • 時計アプレット(Clock)
      • 時計の種類
      • インターネットで時計合わせ
    • OS のデュアルブートで往復すると時計が狂います。
    • Windows とのデュアルブートで時計が狂わないするには?
    • システムクロックが 9H 進んでしまいます。(Debian Linux)
↑

時間設定に関する参照リンク

  • 時間を正確に合わせるには
    http://www.atmarkit.co.jp/flinux/rensai/linuxtips/030timeset.html
  • プログラマ 福重 伸太朗 〜基本へ帰ろう〜 Linuxの時間を合わせよう!
    http://d.hatena.ne.jp/japanrock_pg/20070530
  • JST Clock
    http://www3.nict.go.jp/cgi-bin/JST.pl
  • Network Time Protocol - フリー百科事典『ウィキペディア(Wikipedia)』
    http://ja.wikipedia.org/wiki/Network_Time_Protocol
  • リ アルタイムクロック - フリー百科事典『ウィキペディア(Wikipedia)』
  • 2ch Linux板: 時刻合わせ総合スレッド
    http://pc11.2ch.net/test/read.cgi/linux/1106461500/
  • NTP - wiki@nothing
    http://wiki.nothing.sh/page/NTP
↑

ハードウェアクロックとは何ですか?

「Linuxには、「ハードウェアクロック」と「システムクロック」という2つの時計がある。
 ハードウェアクロックとは、PC上のLSIに搭載された時計で、PCの電源を切った状態でも時刻を刻み続ける。時刻をCMOSに保存するので、 「CMOS時計」と呼ばれたり、「リアルタイムクロック(RTC)」などと呼ばれることもある。」- http://www.atmarkit.co.jp/flinux/rensai/linuxtips/030timeset.html

  • システムクロックとハードウェアクロックの相関性
    Linux システムが起動する際には、ハードウェア・クロックに記録されている時間を自動的に読み込むます。起動後、ネットワーク上の NTP サーバと同期が取られた場合には、時間のずれが修正されます。さらに、システムがシャットダウンされる際には、現在記録されているシステム・クロックが、 ハードウェア・クロックに保存されることになります。
↑

ハードウェア・クロックを変更するには?

次の2つの方法があります。

  • BIOS セットアップ・ユーティリティより直接行う方法。BIOS の設定はコンピュータによってそれぞれ異なるので、お使いのマニュアルを参照して行ってください。
  • hwclock コマンドにより行う方法。
    hwclock のマニュアル・ページでは「hwclock はハードウェア・クロックにアクセスするためのツールです。現在の時刻の表示、指定した時刻へのハードウェア・クロックの設定、ハードウェア・クロックを システム時刻に合わせる (およびその逆)、といった機能を持ちます。」という説明があります。

hwclock コマンドにより設定する場合は、以下の項目を参照してください。

↑

コマンドラインからの設定・操作

↑

hwclock コマンドの概要(-help)

# hwclock -h
hwclock - query and set the hardware clock (RTC)

Usage: hwclock [function] [options...]

Functions:
 --help show this help
 --show read hardware clock and print result
 --set set the rtc to the time given with --date
 --hctosys set the system time from the hardware clock
 --systohc set the hardware clock to the current system time
 --adjust adjust the rtc to account for systematic drift since
  the clock was last set or adjusted
 --getepoch print out the kernel's hardware clock epoch value
 --setepoch set the kernel's hardware clock epoch value to the
  value given with --epoch
 --version print out the version of hwclock to stdout

Options:
 --utc the hardware clock is kept in coordinated universal time
 --localtime the hardware clock is kept in local time
 --directisa access the ISA bus directly instead of /dev/rtc
 --badyear ignore rtc's year because the bios is broken
 --date specifies the time to which to set the hardware clock
 --epoch=year specifies the year which is the beginning of the
  hardware clock's epoch value
 --noadjfile do not access /etc/adjtime. Requires the use of
  either --utc or --localtime

↑

hwclock コマンド 実行例

  • # hwclock
    2008年03月09日 07時29分07秒 -0.361624 seconds
  • # hwclock
    select() to /dev/rtc to wait for clock tick timed out
    このように表示される場合は、--directisa オプション(引数)を追加。
  • # hwclock --directisa
    2008年03月09日 07時29分07秒 -0.361624 seconds
  • # hwclock --directisa --show
    2008年03月09日 07時30分49秒 -0.616029 seconds
  • # hwclock --systohc
    ハードウェアクロックをシステムクロックに同期させるコマンド。
↑

directisa オプションについて

RTC(Real Time Clock)が正しく動かないとき、--directisaを付けると /dev/rtc を使わないようにできます。ただし、このオプションは、ISA マシンまたは (hwclock から充分 ISA マシンに見える程度 ISA の仕様を実装した) Alpha マシンでのみ有効です。

  • http://www.linux.or.jp/JM/html/util-linux/man8/hwclock.8.html

RTC が正しく動かないときは、このようなメッセージが表示されます。
# hwclock --show
select() to /dev/rtc to wait for clock tick timed out

↑

システムの現在時刻を知るには?

コンピュータ(システム)に設定されている現在時刻は、次のコマンドで知ることができます。--utc オプションを使うと、世界標準時に換算して表示してくれます。

 $ date
2008年 3月 12日 水曜日 10:11:15 JST
 $ date --utc
2008年 3月 12日 水曜日 01:11:15 UTC
↑

タイムゾーンを設定・変更するには?

システム(OS)のタイムゾーン(標準時刻)を設定したり変更するには、tzconfig コマンドを用います。地域と都市名から指定します。

# tzconfig
Your current time zone is set to Europe/London
Do you want to change that? [n]: y
(--- 中略 ---)
Your default time zone is set to 'Asia/Tokyo'.
Local time is now: 2008年 3月 9日 日曜日 07:17:21 JST.
Universal Time is now: 2008年 3月 8日 土曜日 22:17:21 UTC.

↑

設定済みのタイムゾーンを確認するには?

現在のタイムゾーンを確認するには、次のコマンドを実行します。

 $ TZ= date

他の地域のタイムゾーンを知るには、都市名またはコードで指定します。

 $ TZ="utc"  date
2008年 3月 13日 木曜日 20:26:19 utc

$ TZ="London" date
2008年 3月 13日 木曜日 20:26:19 London
↑

GNOME 環境での時間合わせ

↑

時計アプレット(Clock)

デスクトップ右上のパネルに標準で表示される「時計アプレット(Clock)」 を用いれば、グラフィカルな画面上で時間の設定が容易に行えます。

この時計アプレットは、システムクロック から時刻を取得します。

↑

時計の種類

以下のいずれかを選択します。

  • 12時間制
  • 24時間制
  • UNIX時間…1970年1月1日からの秒数を表示します。
  • インターネット時間

なお、ローカル時間に替えて、UTCを使用することもできます。

↑

インターネットで時計合わせ

NTP サービスは前もってインストールしておきます*1。

以下、GNOME 環境での合わせ方です。

  1. [時計アプレット]を右クリックして、プロパティを開きます。
  2. [日付と時刻の調整]項目を選択します。
  3. [時刻とサーバの選択]項目で、[サーバー]に ntp.nict.jpと入力します。
  4. [OK]ボタンをクリックして、設定終了です。
↑

OS のデュアルブートで往復すると時計が狂います。

フ リー百科事典『ウィキペディア(Wikipedia)は、この問題に触れています。

「Windows NT系のOSではリアルタイムクロックにローカルタイムを書き込む。それに対して、UNIX系OSでは一般的にUTCで書き込む。その為、両者の間をデュ アルブートで往復すると時計がタイムゾーンに応じて狂ってしまう。この問題に対して、Windows NT系ではUTCを使うという対策がある。しかし、時刻が直感的に判り難く、またローカルタイムの概念を持たないアプリケーションではタイムスタンプが UTCをローカルタイムとみなして保存するので都合が悪くなる。UNIX系OSの一部では、RCのシャットダウンシーケンスの一部でUTCをローカルタイ ムに直してリアルタイムクロックに書き込み、Windowsを起動しても時計が狂わない様にした物もある。」

上記のとおり、OS のデュアルブート環境ではリアルタイムクロックとシステムクロックとの整合性に問題を抱えているようです。

↑

Windows とのデュアルブートで時計が狂わないするには?

Windows NT系のOSでは、リアルタイムクロックにローカルタイムを書き込む仕様となっているようです。これに対して、UNIX系OSでは一般的にUTCが用いら れます。その結果、9H の時間のずれが生じる可能性があります。

時間のずれが生じている場合には、以下の設定を行うと良いでしょう。

  1. Debian では、/etc/deafault/rcS ファイルを開き、UTC=yes を UTC=no に書き換えます。Red Hat Linux 系では /etc/sysconfig/clock に同様な設定ファイルが存在し、ここで UTC=true を UTC=false にします。
  2. リアルタイムクロックにローカルタイム(JST)を設定します。Linux 側から変更するには、次のコマンドが利用できます。
     # hwclock --systohc
  3. それぞれのシステムを再起動して確認します。再起動後も時間のずれが生じなければ、設定完了です。
↑

システムクロックが 9H 進んでしまいます。(Debian Linux)

RTC(Real Time Clock)が正しく動かない ISA の仕様を実装したマシンでは、次のファイルに HWCLOCKPARS=--directisa という設定を行う必要があるようです。

 /etc/init.d/hwclock.sh
HWCLOCKPARS=--directisa

この設定は再起動後に有効となり、毎回の起動時にこの設定が反映されます。

なお、この設定変更をした後は、忘れずにハードウェア・クロックの修正(-9H)も合わせて行ってください。

  • Debian Bug report logs - #397096

HOME