
Ubuntu日本語フォーラム

ログインしていません。
ubuntu14.04 Remixをインストールしてコンソールからhwclock -r で、時間を確認すると+9時間進んでました。
実際の内蔵時計は日本時間を刻んでいます。
OS側の時計も日本時間を表示してますが、hwclockで得られる時間だけ+9hなんです。これBIOS側の時計をグリニッジと勘違いしてローカル時間に補正してるんでしょうか?
初期状態でこれはバグなんでしょうかね?
OS終了時に時間書き出されたらそのたびに手動で時間合わせしなければならないはめに陥ります。
hwclockは地雷ですね。
オフライン
私のところの、MS-Windows 日本語OSとの、デュアル・ブート PC も同様ですが、そういった理由では無いのですか?
オフライン
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となる」
siさんありがとうございます。
全くそのとおりです。windowsに切り替わるたびに時間調整してました。
Ubuntuのほうでいつの間にか終了時にBiosへの書き込みを設定していたみたいです。
それが原因で大慌てになってしまいましたw
katus07さん詳しい説明ありがとうございます。
大変勉強になりました。
オフライン
windowsに切り替わるたびに時間調整してました。
これは、hwclcokうんぬんの話ではなくて、/etc/default/rcSに記述されている設定の問題ですね。
以下の部分をnoにすれば解決できます。
# assume that the BIOS clock is set to UTC time (recommended)
UTC=yes