私はBuildrootでカスタマイズされたボード用に開発されたARM / ulibc Linuxディストリビューションに取り組んでいます。の関係を理解しようとしています
これにより、オンラインでいくつかの例を見たように、次のようになります。
# date --set "2013-04-09 15:06:30"
Tue Apr 9 15:06:30 CDT 2013
# hwclock --systohc --utc
# hwclock
Tue Apr 9 15:06:39 2013 -0.351552 seconds
再起動すると、次の結果が表示されます。
.... boot messages ...
... setting system clock to 2013-04-09 20:07:31 UTC (1365538051)
.... boot messages ...
#
# date; hwclock;
Tue Apr 9 15:08:24 CDT 2013
Tue Apr 9 15:08:25 2013 -0.473164 seconds
#
# date -u; hwclock -u;
Tue Apr 9 20:08:44 UTC 2013
Tue Apr 9 15:08:45 2013 -0.397120 seconds
#
# date; hwclock --localtime
Tue Apr 9 15:09:07 CDT 2013
Tue Apr 9 20:09:08 2013 -0.686601 seconds
#
だからhwclockは現地時間に基づいて考えているようです。はいUTC?-u
実際に適用してみるとなんだか対応可能代わりにタイムゾーン?少し混乱しています。誰でもこの問題をどのように処理するかを提案できますか?
編集する: 単純なARM + Busybox + uclibcシステムとして、sysconfigやzoneinfoなどの一般的なディレクトリやファイルがあまりないことに注意してください。
答え1
--utc
hwclock
ハードウェア時計にUTCを保持するように指示し、ハードウェア時計--localtime
にシステム時計と同じタイムゾーンを維持するように指示します。 (より正確には、ハードウェアクロックが現在のシステムクロックと同じUTCオフセットにあることを意味します。ハードウェアクロックは通常DSTが有効になっているかどうかはわかりません)。
理論的には、これはあなたが知る必要があるすべてを教えてくれます。実際、これは混乱する可能性があります。
# date -u; hwclock -u;
Tue Apr 9 20:08:44 UTC 2013
Tue Apr 9 15:08:45 2013 -0.397120 seconds
「まず、UTCのシステム時間を教えてください。それでは、ハードウェアクロックがUTCのままであると仮定すると、ローカルタイムゾーンの時間はどうなりますか?」
# date; hwclock --localtime
Tue Apr 9 15:09:07 CDT 2013
Tue Apr 9 20:09:08 2013 -0.686601 seconds
「まず、現地時間帯のシステム時間を教えてください。それでは、ハードウェア時計が現地時間を維持していると仮定すると、現地時間帯の時間は何時ですか?」
ほとんどのシステムでは、TZ
環境変数を設定してプロセスのタイムゾーンを設定できます。これはPOSIX機能です。 BusyBoxはこれをサポートし(コンパイル時にこの機能をオフにするオプションは表示されません)、uClibcもサポートすると思います。クロック同期を実行すると、短時間でUTCですべてを操作するのに役立ちます。
export TZ=UTC0
date
hwclock
答え2
次のコマンドを使用して時間情報を設定しました。
# setup local timezone
rm /etc/localtime
# setup for EDT and EST (+4 EDT; +5 EST)
ln -s /usr/share/zoneinfo/EST5EDT /etc/localtime
# setup for only EST (+5 EST)
#ln -s /usr/share/zoneinfo/EST /etc/localtime
# setup for only Daylight Saving Time
#ln -s /usr/share/zoneinfo/EDT /etc/localtime
rm /etc/timezone
echo "US/Eastern" > /etc/timezone
export TZ="/usr/share/zoneinfo/America/New_York"
注:date -u MMDDhhmm
停電後にコンピュータの時間が変動するため、このスクリプトを実行した後に原子テーブルコマンドを使用してシステムクロックを設定します。