hakeの日記

Windows環境でプログラミングの勉強をしています。

OpenZaurus - 時刻について

なんだかOpenZaurus用カテゴリのozをみるたびにorzを連想してしまったり。。。

tuntun01さんの日記にリブート時に時刻が5月23日固定になってしまう対策が書かれていた。
/etc/init.d/bootmisc.shの中で/etc/timestampの値(固定値)をdateで設定しなおしているのが原因らしい。どちらかというとtimestampの値が更新されないのが原因じゃないかという気もするんだけど。。。
ということで、これをコメントアウトして再起動……orz


1970年元日の9:02になっちゃうよ!
前々から思ってるんだけど4桁ザウルス用のROMと3桁ザウルス用とで何か挙動が違う気がする。。。


/etc/init.d/の下を見てみたら、rebootでtimestampの書き換えを行っていて、これが上手く機能していないみたい。/etc/rc6.d/S90rebootのリンク先になってるんだけど、このディレクトリがリブート時に実行される場所なんでしょうか?

試しに、bootmisc.shのコメントアウトを元に戻してから、他のファイルと見比べてS90rebootをK90rebootに名前変更したら、見事!時刻が保存されるようになりました、ただし再起動している間の時間のずれが生じますけど(^^ゞ
Sで始まるのが起動時で、Kで始まるのが終了時のファイルってことで良いでのでしょうか。

追記

tuntun01さんよりトラックバックをいただきました。hwclockの設定を行うために

ln -s /etc/init.d/hwclock /etc/rc5.d/S01hwclock 

とのことです。試して見たのですが再起動時の日時が1970年になるのは変化ありませんでした(bootmisc.shの該当部分はコメントアウトした状態です)
で、hwclockは何やってるかというと、引数がstartの場合はハードウェアクロック(RTC)の値をシステムクロックに設定、stopやrestartの場合はRTCの値をシステムクロックに設定してるっぽい。RTCはともかくシステムクロックというのが何だかよく分からない、Linuxが管理するソフト的なクロックということ?

/sbin/hwclock --hctosys   RTC→System
/sbim/hwclock --systohc   System→RTC

コマンドで実行してみる

# /sbim/hwclock --systohc   システムクロックをRTCに退避?
# date -s 010101012000     2000年に設定
# /sbin/hwclock --hctosys   退避?した値をシステムに設定

結果、dateで設定した時刻の9時間前の時刻が--hctosysで設定された。システムクロックってのはRTCの時刻にタイムゾーンの補正を外した時間?


いずれにしても3桁ザウルスでは再起動時にRTCの値がキレイにクリアされてしまうみたいですね。だからtimestampに保存させる必要があるのかな?