[Armadillo:04469] Re: Armadillo-9のDebianの起動について
suzuki
email@hidden
2009年 8月 7日 (金) 17:12:44 JST
お世話になっております。 suzukiです。
Armadillo内の時間を現在の時間に設定しましたが、Debianは起動しませんでした。
ext3で行うと起動は出来ますので、そちらで行うようにしたいと思います。
> At Mon, 27 Jul 2009 14:28:05 +0900,
> suzuki wrote:
>>
>> >> mke2fs -O -filetype /dev/hdc1
>> >>
>> >> を、
>> >>
>> >> mke2fs -j /dev/hdc1
>> >>
>> >> にし、ext3にする事で、問題なく起動しました。
>> >
>> > mke2fs -O -filetype /dev/hdc1
>> >
>> > 上記コマンドでフォーマットをやり直しても問題があったために、ext3にした
>> > ということでしょうか? もしそうであれば教えてください。
>>
>> そうです。
>
> 調べてみました。
>
> 結論から言うと、armadillo-9の RTCが現在時間ではなく、ドライバの初期化
> 時間である 2000年にセットされていませんか? または、時間を正しくセット
> して howto を手順通りに行なうと、エラーにならないと思いますが、どうで
> すか?
>
> ファイルシステムは、たぶん PCで作成されていると思います。そこで作成さ
> れたファイルシステムは、PCのシステム時間、つまり現在時間が書き込まれま
> す。しかし、armadillo-9に CFを接続して起動すると、fsckの下記のコードの
> 部分でチェックが動きます。
>
> 最近の新しい e2fsckは下記のようになっていますが、
>
> } else if (fs->super->s_checkinterval &&
> ((ctx->now - lastcheck) >=
> ((time_t) fs->super->s_checkinterval))) {
> reason = _(" has gone %u days without being checked");
> reason_arg = (ctx->now - fs->super->s_lastcheck)/(3600*24);
> if (batt && ((ctx->now - fs->super->s_lastcheck) <
> fs->super->s_checkinterval*2))
> reason = 0;
> }
>
> Armadilloが現在採用している Debian etchに入っている e2fsck は、
> e2fsprogs 1.40相当なので
>
> http://git.kernel.org/?p=fs/ext2/e2fsprogs.git;a=commitdiff;h=2acad6b4895a0e218f9d9eece1ade23c2cf4ffc7#patch5
>
> にある変更が入っていないようです。そのため
>
> } else if (fs->super->s_checkinterval &&
> ((ctx->now - fs->super->s_lastcheck) >=
> fs->super->s_checkinterval)) {
> reason = _(" has gone %u days without being checked");
> reason_arg = (ctx->now - fs->super->s_lastcheck)/(3600*24);
> if (batt && ((ctx->now - fs->super->s_lastcheck) <
> fs->super->s_checkinterval*2))
> reason = 0;
> }
>
> となっています。ソースコードは↓にあります
> http://ftp.de.debian.org/debian/pool/main/e/e2fsprogs/e2fsprogs_1.39+1.40-WIP-2006.11.14+dfsg.orig.tar.gz
> http://ftp.de.debian.org/debian/pool/main/e/e2fsprogs/e2fsprogs_1.39+1.40-WIP-2006.11.14+dfsg-2etch1.diff.gz
>
> ここで、ctx->now が s_lastcheckより古いと 「マイナスの signed int >=
> プラスの UNSIGNED int」という比較になってしまいます。(time_t は、
> signed intです) このため、unsigned による比較になり、本来であれば小さ
> いはずの「マイナスの signed int」が「プラスの UNSIGNED int」より大きい
> と判断され、間違ったコードパスに入るようです。
>
> なにか勘違いしているところがあれば、ツッコミお願いします。
> --
> yashi
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>
armadillo メーリングリストの案内