
Ubuntu日本語フォーラム

ログインしていません。
御世話様です。
現在以下のようなシステムをハードベンダから購入し、アプリを製作しております。
~
【システム概要】
OS:鵜分津10.04 LTS, lucid
RTCバックアップ:2次電池による(1week程度で消耗する模様)
~
通常起動時には問題ないのですが、電池が消耗(=しばらく使用しない状態)した後に起動すると、以下のエラーが出てシステムが停止してしまいます。
~
fsck from util-linux 2.17.2
/dev/sda1:Superblock last mount time (Mon Feb 27 13:11:48 2012,
now = Thu Dec 17 15:46:45 2009) is in the future.
/dev/sda1:UNEXCEPTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
mountall:fsck / [s55] terminated with error 4
mountall: Filesystem has errors: /
~
原因は電池が切れたことにより、最終マウント日時>現在日時(リセットされる為)によるものであり、BIOS画面で日時を再設定&再起動で正常な状態に戻すことはできます。
sudo tune2fs -c 0 -i 0 /dev/sda1
で起動時のfsckを回避できるかと思い試してみましたが、異常終了後の起動時には強制的(?)にfsckが呼び出されるようであり回避できませんでした。
組み込みシステムであり使用されない状態(RTCが初期化)になることは想定される為、毎回この状態になることは好ましくありません。また電源も正しくshutdownされるような使用法は期待出来ない状況にあります。
そこで以下点についてお教え願えないでしょうか?
【質問事項】
(1)起動時にマウント時刻のチェックのみ無効にさせる方法はありませんでしょうか?fstabのオプションを0設定で強制OFFに出来るという情報は見つけられたのですが、正しい方法とは思いにくく躊躇しております
(2)RTCが切れること、起動後に外部クライアントからdateを指定すること(起動時の日時は重要ではない)、異常終了的な電源OFFが予想されることなどを勘案し、システムを起動させるためにはどのように設定すべきでしょうか?指針だけでもお教え頂けるとさいわいです。
# 異常電源OFFによるシステム破損は想定しない予定ですが、破損した場合の(マニュアルによる)復旧だけはしたいと考えています
~
(3)date -sコマンドで「現在よりも古い日時を設定」すると、terminalの反応が非常に遅くなる症状が出ています。現在日時よりも新しい日時を設定した場合には反応が遅くなることはありません。ただ一度古い日時をセットした後、再度新しい日時をセットしても遅延が治る場合と治らない場合があります。何が原因でこのような状態になるのでしょうか?
御手数お掛け致しますが、宜しくお願い致します。
オフライン
御世話様でございます。
申し訳ありません、(1),(2)については自己解決出来ました。マスクするのではなく、fsckにリペアさせればOKだったようです。お騒がせして申し訳ありませんでした。
~
【対策】
(1)/etc/default/rcSをvi(roor権限)で開く
(2)「FSCKFIX=no」を「FSCKFIX=yes」に変更、保存、再起動
【確認法】
(1)BIOSで古い日付に設定し再起動した所、問題なく古い日付で起動できることを確認した
~
引き続き(3)については調査しておりますが、情報等ございましたらお知らせ下さいませ。宜しくお願い致します。
オフライン
guessのレベルになってしまいますが、(3)については、
・ハードウェア割り込みがx86の標準とは違う(極端に頻繁に割り込みがかかる環境にある or 割り込みがかからない)。
・クロックジェネレータが(同上)
のどちらかである、という仮定をすると、スケジューラまわりで現在時刻を参照したコードが混じっていると何かおかしなことが起こるかもしれません(sched_clock()あたり。わりとアヤシイです)。
お手元の機器の特性が分からないのですが、以下のいずれかで発生を抑制できないでしょうか?
・スケジューラを変更してみる。具体的には、/sys/block/sda/queue/scheduler を変更する。
・カーネルの利用するクロックを(ハードウェアがサポートしている)他のものに変更してみる。具体的には、/sys/devices/system/clocksource/clocksource0/available_clocksource で出力されるリストに含まれるクロックソースで/sys/devices/system/clocksource/clocksource0/current_clocksource をセットする。
オフライン
御世話様でございます。
御指導有難うございます。
組み込み&Linuxの経験が浅く、御説明が要点をつかめていない可能性があります。申し訳ありません。
>
hito による投稿:
guessのレベルになってしまいますが、(3)については、
> ・ハードウェア割り込みがx86の標準とは違う(極端に頻繁に割り込みがかかる環境にある or 割り込みがかからない)。
> ・クロックジェネレータが(同上)
>のどちらかである、という仮定をすると、スケジューラまわりで現在時刻を参照したコードが混じっていると何かおかしなことが起こるかもしれません
>(sched_clock()あたり。わりとアヤシイです)。
>お手元の機器の特性が分からないのですが、以下のいずれかで発生を抑制できないでしょうか?
組み込みCPUは以下の通りです。
AMD Geode LX800 processors at 500MHz
512Mbyte or 1Gbyte DDR 333MHz memory (SO-DIMM)
[追記]
開発はVNC接続したPCから行い、ubuntu上ではxfceが稼働しております。その環境(xfce)上で画像圧縮ボード関連のアプリを作成しております。
> ・スケジューラを変更してみる。具体的には、/sys/block/sda/queue/scheduler を変更する。
> ・カーネルの利用するクロックを(ハードウェアがサポートしている)他のものに変更してみる。
>具体的には、/sys/devices/system/clocksource/clocksource0/available_clocksource で出力されるリストに含まれるクロックソース
>で/sys/devices/system/clocksource/clocksource0/current_clocksource をセットする。
正直申し上げまして、newbeで上記御指摘についてすぐの反応が出来ませんでした。schedulerから調べを開始致しました。
その後色々試した結果、遅延状態の際には以下の状況が確認されました。
(1)dateコマンドで過去日付設定を実行すると、開発しているアプリ(画像圧縮、time関数を内部で利用、terminalから起動)の動きに遅延が出る
# time関数で停止しているのではと疑っています
(2)遅延が発生すると、他のterminalの動きにも遅延が発生します(# でリターンを入力しても応答までに数秒かかるときあり)
(3)このときのtopコマンドでのCPU負荷は平常時と変化なし
(4)xfce自体に遅延は無いようにみられる(xfceメニュー等の呼び出しに遅れは感じられない)
(5)PCからsshしたターミナルには遅延は生じない
(6)アプリを起動しない状態(xfce起動状態でterminalだけ起動)でdateコマンドを実行しても遅延が生じる
(7)sshしたterminalからアプリを起動すると、(1)と同じ状況になる
これらよりtime関数に関連して処理の不具合が発生していると考えております。頂いた情報を元にもう少し調べを進めてみたいと思います。有難うございました。
オフライン