ハードウェアクロック(RTC)についてメモ

時刻設定からの yak shaving でハードウェアクロック(リアルタイムクロック, RTC, BIOS クロック, CMOS クロック, etc) を調べたので、忘れないうちにつらつらと書いてみる。

Linux の2種類のクロック

  • ハードウェアクロックは、マザーボード上のICによって提供される時計。電源が入っていなくても時刻を刻み続ける。Linxu では hwclock コマンドで表示できる。
  • システムタイムは Linux カーネル内で動作する時計。Linux では date コマンドで表示できる。

ハードウェアクロックとシステムタイム間の同期

OS 起動時にハードウェアクロックをシステムタイムに設定する。($ hwclock --hctosys)

RHEL は6までは OS 停止時にシステムタイムをハードウェアクロックに同期していた。($ hwclock --systohc)
7 からは同期しなくなった。

In Red Hat Enterprise Linux 6, the hwclock command was run automatically on every system shutdown or reboot, but it is not in Red Hat Enterprise Linux 7.
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Configuring_the_Date_and_Time-hwclock.html

ハードウェアクロックを確認

hwclock コマンドを使う

] # hwclock --show
Sat 27 Dec 2014 09:41:55 PM JST  -0.047512 seconds

RHEL 7 以降 では timedatectl コマンドでシステムタイムやタイムゾーンなども含めた時刻情報を確認できる。

] # timedatectl
      Local time: Sat 2014-12-27 09:49:50 EST
  Universal time: Sat 2014-12-27 14:49:50 UTC
        RTC time: Sat 2014-12-27 14:49:49
        Timezone: America/New_York (EST, -0500)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2014-11-02 01:59:59 EDT
                  Sun 2014-11-02 01:00:00 EST
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2015-03-08 01:59:59 EST
                  Sun 2015-03-08 03:00:00 EDT

ハードウェアクロックのタイムゾーン

Linux のハードウェアクロックは UTC またはローカルタイムゾーンのどちらかを選択できる。(デフォルトはUTC)。

Ubuntu

/etc/default/rcS の次の箇所を no に修正。
via https://help.ubuntu.com/community/UbuntuTime

# assume that the BIOS clock is set to UTC time (recommended)
UTC=yes

RHEL 7 以前

次の /etc/adjtime の3行目を UTC から LOCAL に修正

-0.000015 1419698646 0.000000
1419698646
UTC

RHEL 7 以降

timedatectl set-local-rtc コマンドで操作

] # cat /etc/adjtime
0.0 0 0.0
0
UTC
]# timedatectl set-local-rtc 1 # set hardware clock to local timezone
# timedatectl
      Local time: Sat 2014-12-27 10:17:21 EST
  Universal time: Sat 2014-12-27 15:17:21 UTC
        RTC time: Sat 2014-12-27 10:17:21
        Timezone: America/New_York (EST, -0500)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: yes  <- local timezone
      DST active: no
 Last DST change: DST ended at
                  Sun 2014-11-02 01:59:59 EDT
                  Sun 2014-11-02 01:00:00 EST
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2015-03-08 01:59:59 EST
                  Sun 2015-03-08 03:00:00 EDT

Warning: The RTC is configured to maintain time in the local timezone. This
         mode is not fully supported and will create various problems with time
         zone changes and daylight saving adjustments. If at all possible use
         RTC in UTC, by calling 'timedatectl set-local-rtc 0'.

最後の Warning メッセージを読めばわかるように、ハードウェアクロックをローカルタイムにするとタイムゾーンの移動やサマータイムなどめんどくさい計算が絡んでくるので “at all possible use RTC in UTC” と全力でローカルタイムゾーンを使わないように警告している。

Linux も含めて多くの OS が ハードウェアクロックを UTC にしている一方で Windows はローカルタイムゾーンを採用している。
MS-DOS 時代からの後方互換性とBIOS画面でユーザが UTC ではなくローカルタイムを設定した場合の混乱を回避するためらしい。

Why does Windows keep your BIOS clock on local time? – The Old New Thing – Site Home – MSDN Blogs

References

Advertisements
Tagged with: , ,
Posted in linux

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 4 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 5 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 5 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 10 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago
%d bloggers like this: