お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2014-05-08 03:03:04

skri
新しいメンバ
登録日: 2013-07-02

hwclockの時間がおかしい

ubuntu14.04 Remixをインストールしてコンソールからhwclock -r で、時間を確認すると+9時間進んでました。
実際の内蔵時計は日本時間を刻んでいます。
OS側の時計も日本時間を表示してますが、hwclockで得られる時間だけ+9hなんです。これBIOS側の時計をグリニッジと勘違いしてローカル時間に補正してるんでしょうか?
初期状態でこれはバグなんでしょうかね?
OS終了時に時間書き出されたらそのたびに手動で時間合わせしなければならないはめに陥ります。
hwclockは地雷ですね。

オフライン

 

#2 2014-05-08 10:12:51

si
メンバ
From: hokkaido kitami, jp
登録日: 2007-01-15

Re: hwclockの時間がおかしい

私のところの、MS-Windows 日本語OSとの、デュアル・ブート PC も同様ですが、そういった理由では無いのですか?

オフライン

 

#3 2014-05-08 10:52:17

katsu07
ゲスト

Re: hwclockの時間がおかしい

manpage-jaでは、

コード:

hwclock -r or hwclock --show
〜略〜
       --show ハードウェア・クロックを読んで時刻を標準出力に表示する。  ここで
              表示される時刻は常にローカル・タイムである。    ハードウェア・ク
              ロックを協定世界時にしていても表示はローカル・タイムである。
              --utc オプションの部分を参照すること。
〜略〜
       --utc

       --localtime
              ハードウェア・クロックを協定世界時  (Universal Coordinated Time:
              UTC) と ローカルタイムのどちらにするか (しているか) を指定する。
              UTC  にするかローカルタイムにするかはユーザの選択しだいだが、 時
              計の内部にはどちらを選択したかを記録する場所はない。    したがっ
              て、ユーザーはこのオプションで自分の選択を  hwclock に伝えなけれ
              ばならない。

              これらの指定を間違ったほうにしたり (あるいはデフォルトを勘違いし
              て  両方とも指定しなかったり) すると、ハードウェア・クロックの設
              定や  クロックへの問い合わせの結果はめちゃめちゃになってしまうだ
              ろう。

              --utc  も --localtime も指定しなかった場合のデフォルトは、最後に
              hwclock  を使って時計を合わせたとき  (つまり  --set,  --systohc,
              --adjust  オプションを指定しての実行が成功したとき) に指定してい
              た方になる。 このときの選択は adjtime ファイルに記録されている。
     >>>>>    adjtime   ファイルがなかったときのデフォルトはローカルタイムにな
              る。

       --noadjfile
              /etc/adjtime によって提供される機能を無効にする。 このオプション
              を使うと、  hwclock  は  /etc/adjtime の読み込みも書き込みもしな
              い。 このオプションを使うときは、 --utc または --localtime  を指
              定しなければならない。
〜略〜

となっています。
但し、LANG=C man hwclock とした場合の記述と「>>>>>」で示した部分の記述が逆です。
LANG=Cでは、「>>>>>」で示した部分が以下の様に記述されている。

If  the  adjtime  file doesn't exist, the default is UTC time.

> 実際の内蔵時計は日本時間を刻んでいます。
> hwclockで得られる時間だけ+9hなんです。
と言う動作からも標準はUTCだと思います。

結果
/etc/init/hwclock.conf と /etc/init/hwclock-save.conf では、--noadjfile が指定されています。(/etc/adjtime も存在しない)
それをふまえると、ユーザーからハードウェアクロックが--utcなのか--localtimeなのか指定しなければならないと思います。
実際のハードウェアクロックがJSTならば、オプション無しだとUTCとして解釈されて、補正して+9時間となる。
(誤った指定による補正表示なので、OS終了時に書き出される時間には影響しないと思います)
$ sudo hwclock --localtime
でハードウェアクロックに設定されているJSTがそのまま表示されると思います。


実際のハードウェアクロックがUTCでローカルタイムがJSTの場合に--utcを指定。
$ sudo hwclock --utc
ハードウェアクロックに設定されている時間をUTCとして解釈し、補正してJST(ローカルタイム)を表示。
「UTCから+9時間されて表示される --> JSTとなる」

実際のハードウェアクロックがUTCでローカルタイムがJSTの場合に--localtimeを指定。
$ sudo hwclock --localtime
ハードウェアクロックが設定されている時間を(JST)ローカルタイムとして解釈し、そのまま表示。
「JSTから-9時間されて表示される --> UTCとなる」

実際のハードウェアクロックがUTCでローカルタイムがJSTの場合に--utcと--localtimeを指定しない。
$ sudo hwclock 又は $ sudo hwclock -r
ハードウェアクロックに設定されている時間をUTCとして解釈し、補正してJST(ローカルタイム)を表示。
「UTCから+9時間されて表示される --> JSTとなる」

 

#4 2014-05-08 23:08:56

skri
新しいメンバ
登録日: 2013-07-02

Re: hwclockの時間がおかしい

siさんありがとうございます。
全くそのとおりです。windowsに切り替わるたびに時間調整してました。
Ubuntuのほうでいつの間にか終了時にBiosへの書き込みを設定していたみたいです。
それが原因で大慌てになってしまいましたw

katus07さん詳しい説明ありがとうございます。
大変勉強になりました。

オフライン

 

#5 2014-05-09 11:42:48

katsu07
ゲスト

Re: hwclockの時間がおかしい

windowsに切り替わるたびに時間調整してました。

これは、hwclcokうんぬんの話ではなくて、/etc/default/rcSに記述されている設定の問題ですね。
以下の部分をnoにすれば解決できます。

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

 

Board footer

Powered by FluxBB