Armadilloフォーラム

/etc/configが壊れる場合

nakamura3776

2015年8月7日 14時52分

Armadillo-420、Linux(atmark-dist v1.28.1 (AtmarkTechno/Armadillo-420)
Linux 2.6.26-at15 [armv5tejl arch])でソフト開発を行っております。

 いつもお世話になっております。
中村です。

/etc/config (フラッシュメモリー)が壊れしまう条件をお教え願います。

 先日、納品した製品で電源の瞬断が数回連続発生しました。
 大半の装置は元に戻りましたが、数台の装置については、/etc/config の内容が壊れておりました。
 たぶん、/etc/default がコピーされています。
 過去に数回電源OFF・ONしている為 flatfsd -s の未実行は考え難いです。
 (/etc/config のファイルを更新した場合、”flatfsd -s”実行後に再起動(reboot)する運用です。)

 1.書込み処理中に電源OFFする 他に /etc/config が壊れしまうことがありますか?
  また、ユーザ様に説明するため、過去の事例等あれば、お教えください。

 2.hermitで起動して、/etc/config の内容を確認する/書換える 事は可能でしょうか?
  今回のシステムは、シリアルからログインできない設定の為、ネットの環境が壊れた場合、
  別システムをhermitでインストールして、/etc/config の内容を修正後、再インストール
  する裏技を使用しないといけない為。

以上 よろしくお願いします。

コメント

at_kojiro.yamada

2015年8月17日 17時56分

> 大半の装置は元に戻りましたが、数台の装置については、/etc/config の内容が壊れておりました。
> たぶん、/etc/default がコピーされています。
> 過去に数回電源OFF・ONしている為 flatfsd -s の未実行は考え難いです。
> (/etc/config のファイルを更新した場合、”flatfsd -s”実行後に再起動(reboot)する運用です。)

起動時にconfig領域が破壊されていた場合、
/etc/defaultの内容を/etc/configに反映するようになっています。

推測ですが、config領域への書き込み中に電源の瞬断が起きた際に、
誤ったデータが書き込まれた、もしくは書き込み完了前に再起動した
のではないかと思います。

> 1.書込み処理中に電源OFFする 他に /etc/config が壊れしまうことがありますか?

頻繁にconfig領域の書き換えを行う場合、
NORフラッシュの書き換え寿命により、
運用中にデータが正しく書き込めなくなる可能性が高いです。

カーネル、flatfsdのバグの可能性も考えられますが、
現状では、通常の操作でconfig領域が破壊されるようなバグは見つかっていません。

また、root権限さえあれば、/dev/flash/nor.configから
config領域にデータを書き込むことができますので、
root権限を持つプロセスなら、config領域を破壊することが可能です。
ただし、flatfsd以外が/dev/flash/nor.configにデータを書き込んだりはしな
いはずなので、意図的に行わない限り、可能性は低いです。

> 2.hermitで起動して、/etc/config の内容を確認する/書換える 事は可能でしょうか?

config領域の内容確認は難しいですが、
書き換えはtftpdlや、hermit downloadコマンドで行うことができます。

ただし、起動中のArmadilloから、あらかじめ、config領域を吸い出しておく必要があります。

■conifg領域の吸出し

[Armadillo ~]# dd if=/dev/flash/nor.config of=nor.config

■吸いだしたイメージの書き込み(tftpdl)

hermit> tftpdl dhcp 192.168.0.2 --config=nor.config
initializing net-device...OK
 
Client: 192.168.0.1
Server: 192.168.0.2
Region(config): nor.config
 
Filename : nor.config
..........................
Filesize : 131072
 
programing: config
#
 
completed!!

■吸いだしたイメージの書き込み(hermit download)
ATDEでの例を記載します。

[ATDE ~]$ hermit download --input-file ./nor.config --region config --force-locked --port /dev/ttyUSB0

nakamura3776

2015年8月18日 11時23分

Yamada様
 中村です。

 回答有難うございました。

 申し訳ありません。質問の内容を変更します
  ”/etc/config が壊れる場合” 改め 
  ”/etc/config に flash領域の内容が反映されない場合(flash領域が壊れる場合)” 

>
> 起動時にconfig領域が破壊されていた場合、
> /etc/defaultの内容を/etc/configに反映するようになっています。
>
> 推測ですが、config領域への書き込み中に電源の瞬断が起きた際に、
> 誤ったデータが書き込まれた、もしくは書き込み完了前に再起動した
> のではないかと思います。
>
私の認識では、/etc/config は RAM領域に在り
起動時に flash領域が反映される。
また. /etc/default と比較して、/etc/config に存在しないファイルを 反映する。
flatfsd -s を実行した場合のみ、/etc/config の内容がflash領域に反映される。

 /etc/config を書き込み中に瞬断した場合でも、flash領域の内容が反映されのでは?

> > 1.書込み処理中に電源OFFする 他に /etc/config が壊れしまうことがありますか?
>
> 頻繁にconfig領域の書き換えを行う場合、
> NORフラッシュの書き換え寿命により、
> 運用中にデータが正しく書き込めなくなる可能性が高いです。
>
512kバイトのファイルの書き込みを行う場合、何回程度でNORフラッシュの書き換え寿命になりますか?
NORフラッシュの書き換え寿命に達していることを確認する方法は有りますか(flatfsd -s 実行時の戻り値で分かりますか?)

よろしくお願い致します。

at_kojiro.yamada

2015年8月24日 15時38分

> また. /etc/default と比較して、/etc/config に存在しないファイルを 反映する。

上記は、/etc/rc.d/S04flatfsdで行っている処理のことでしょうか?

https://users.atmark-techno.com/comment/2274#comment-2274
の投稿の、
「起動時にconfig領域が破壊されていた場合、/etc/defaultの内容を
/etc/configに反映するようになっています。」
というのは、/etc/rc.d/S04flatfsdでの処理ではなく、
flatfsd内で行っている処理になります。

atmark-dist/user/flatfsd/flatfsd.cの
548行目から始まるif文の中で、
flat_clean(1)により、/etc/config内のファイルを削除、
flat_new(DEFAULTDIR)により、/etc/defaultのファイルを/etc/configにコピー、
save_config_to_flash()により、/etc/configの内容をconfig領域に保存しています。

> flatfsd -s を実行した場合のみ、/etc/config の内容がflash領域に反映される。
>
>  /etc/config を書き込み中に瞬断した場合でも、flash領域の内容が反映されのでは?

上述のとおりですが、flatfsd -r を実行した場合、
/etc/defaultの内容が config領域および/etc/config
に反映されることがあります。

> 512kバイトのファイルの書き込みを行う場合、何回程度でNORフラッシュの書き換え寿命になりますか?

Armadillo-400シリーズに搭載のNOR Flashは、ブロック毎のerace回数の寿命が
最小10万回です。

flatfsdは、/etc/config内のファイルを圧縮して、checksumと共に書き込みます。

そのため、概算になりますが、
一度の書き込みで、config領域のサイズに対し
n%のサイズのデータを書き込みを繰り返す場合、

100000 / (n / 100) [回]

の書き込みでconfig領域全体のブロックがerace回数の寿命に達します。
仮に、config領域のサイズがデータのサイズと同じ512KBの場合、100000回の書
き込みで寿命に達する計算です。

> NORフラッシュの書き換え寿命に達していることを確認する方法は有りますか(flatfsd -s 実行時の戻り値で分かりますか?)

NORフラッシュの書き換え寿命に達しているかどうかを
flatfsd -s の戻り値で判断することはできません。

不良の起き方に様々なパターンがあるため、
書き換え寿命かどうかの判定は、簡単にはできません。

一般的には、
NORフラッシュへの書き込みは必要最小限に抑え、
erace回数の寿命に達しないようにシステムを設計するのが定石となっています。

もし、書き換え寿命が疑われる場合、
「製品保証規定」をご確認の上、
「製品交換 お申し込みフォーム」よりお問い合わせください。

製品保証規定
http://www.atmark-techno.com/support/warranty-policy

製品交換 お申し込みフォーム
https://www.atmark-techno.com/contactinfo/form_warranty

nakamura3776

2015年8月26日 11時15分

Yamada様

 いつもお世話になっています。 中村です。
 回答ありがとうございます。

> > また. /etc/default と比較して、/etc/config に存在しないファイルを 反映する。
>
> 上記は、/etc/rc.d/S04flatfsdで行っている処理のことでしょうか?
>
> https://users.atmark-techno.com/comment/2274#comment-2274
> の投稿の、
> 「起動時にconfig領域が破壊されていた場合、/etc/defaultの内容を
> /etc/configに反映するようになっています。」
> というのは、/etc/rc.d/S04flatfsdでの処理ではなく、
> flatfsd内で行っている処理になります。
>
> atmark-dist/user/flatfsd/flatfsd.cの
> 548行目から始まるif文の中で、
> flat_clean(1)により、/etc/config内のファイルを削除、
> flat_new(DEFAULTDIR)により、/etc/defaultのファイルを/etc/configにコピー、
> save_config_to_flash()により、/etc/configの内容をconfig領域に保存しています。

ソース確認してみます。

>
> > flatfsd -s を実行した場合のみ、/etc/config の内容がflash領域に反映される。
> >
> >  /etc/config を書き込み中に瞬断した場合でも、flash領域の内容が反映されのでは?
>
> 上述のとおりですが、flatfsd -r を実行した場合、
> /etc/defaultの内容が config領域および/etc/config
> に反映されることがあります。
>

 flash領域、読み込み時に /etc/default が反映される事が有るのですね。

> > 512kバイトのファイルの書き込みを行う場合、何回程度でNORフラッシュの書き換え寿命になりますか?
>
> Armadillo-400シリーズに搭載のNOR Flashは、ブロック毎のerace回数の寿命が
> 最小10万回です。
>
> flatfsdは、/etc/config内のファイルを圧縮して、checksumと共に書き込みます。
>
> そのため、概算になりますが、
> 一度の書き込みで、config領域のサイズに対し
> n%のサイズのデータを書き込みを繰り返す場合、
>
> 100000 / (n / 100) [回]
>
> の書き込みでconfig領域全体のブロックがerace回数の寿命に達します。
> 仮に、config領域のサイズがデータのサイズと同じ512KBの場合、100000回の書
> き込みで寿命に達する計算です。
>
> > NORフラッシュの書き換え寿命に達していることを確認する方法は有りますか(flatfsd -s 実行時の戻り値で分かりますか?)
>
> NORフラッシュの書き換え寿命に達しているかどうかを
> flatfsd -s の戻り値で判断することはできません。
>
> 不良の起き方に様々なパターンがあるため、
> 書き換え寿命かどうかの判定は、簡単にはできません。
>
> 一般的には、
> NORフラッシュへの書き込みは必要最小限に抑え、
> erace回数の寿命に達しないようにシステムを設計するのが定石となっています。
>
> もし、書き換え寿命が疑われる場合、
> 「製品保証規定」をご確認の上、
> 「製品交換 お申し込みフォーム」よりお問い合わせください。
>
> 製品保証規定
> http://www.atmark-techno.com/support/warranty-policy
>
> 製品交換 お申し込みフォーム
> https://www.atmark-techno.com/contactinfo/form_warranty
>

 今回は、/etc/config のファイルを再度作成することにより正常に動作しているため NORフラッシュは壊れていないと思います。

 ありがとうございます。 参考にします。