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はlocaltime is UTCと考えているようです。そして、何らかの理由で、-u
実際には適用代わりにタイムゾーン?私は少し混乱しています。誰もが私がこれについてどうすべきかを提案できますか?
編集: ARM + Busybox + uclibc、スリム化されたシステムであることに注意してください。sysconfigなどの一般的なディレクトリやファイルは多くありません。およびzoneinfo。
--utc
は、ハードウェアクロックがUTCを維持することをhwclock
に通知し、--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
次のコマンドで時間情報を設定しました。
# 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
コマンドで実行された後、システム時計を設定します。電源を切った後、コンピューターの時刻がずれるので、アトミックウォッチを使用します。