sakashita_spc
2019年3月17日 19時20分
お世話になります。
VFAT(msdos)でフォーマットされたSDカードを以下のスクリプト(rc.local内)でマウントしています。
if test -b /dev/mmcblk0p1; then
echo -n "Mounting SD Memory"
mount -t vfat /dev/mmcblk0p1 /mnt
check_status
fi
以下を参考にしました。
https://users.atmark-techno.com/forum/armadillo/1478
通常時は、問題ないのですが、エラーが発生したとき、read-onlyになります。設定を見ると
# mount
...<略>....
/dev/mmcblk0p1 on /mnt type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=cp437,iocharset=utf8,shortname=mixed,errors=remount-ro)
となり、『errors=remount-ro』これにより、Readonlyになると思います。
また、実際に、コンソールに
FAT-fs (mmcblk0p1): error, clusters badly computed (274 != 273)
FAT-fs (mmcblk0p1): Filesystem has been set read-only
と出ます。システム的にreadonlyにするのが適切なのでしょうが、アプリの運用上、このタイミングを知る方法はありますでしょうか?
(ポーリングで監視が必要?あるいは、シグナルが発生する?)
また、エラーが発生しても、read-onlyを抑制する設定に変更は可能でしょうか?
(このあたりは、アプリ利用者のリスクにはなるのですが。。。)
このあたりを参照しましたが、少し求めているものが異なりますので、よろしくお願いします。
https://users.atmark-techno.com/forum/armadillo/1801
コメント
sakashita_spc
溝渕様
下記、ご提案ありがとうございます。
> ファイルシステムの破損状態にもよるのですが、fsck実行後に、rwでremount
> してみてはいかがでしょうか。
これは、うまくいきそうです。
自動的にremountするには、何か、スクリプトを実行させておくしか方法はないでしょうか?
cronで、定時間毎にチェックするような感じになりますでしょうか?
良い方法があれば提案いただければ、幸いです。
以上、よろしくお願いします。
> 溝渕です。
>
> > FAT-fs (mmcblk0p1): error, clusters badly computed (274 != 273)
> > FAT-fs (mmcblk0p1): Filesystem has been set read-only
> >
> > と出ます。システム的にreadonlyにするのが適切なのでしょうが、アプリの運用上、このタイミングを知る方法はありますでしょうか?
>
> mount後に、"/proc/mounts"の出力をパースすることで知ることができると思います。
>
> このエラーメッセージは、Linuxカーネルの、
> fs/fat/misc.c: fat_chain_add()
> によって出力されますが、ueventを発生させる等をしない実装になっています。
>
>
> > また、エラーが発生しても、read-onlyを抑制する設定に変更は可能でしょうか?
> > (このあたりは、アプリ利用者のリスクにはなるのですが。。。)
>
> ファイルシステムの破損状態にもよるのですが、fsck実行後に、rwでremount
> してみてはいかがでしょうか。
>
at_mizo
at_kojiro.yamada
sakashita_spc
at_mizo
2019年3月18日 16時09分
溝渕です。
> FAT-fs (mmcblk0p1): error, clusters badly computed (274 != 273)
> FAT-fs (mmcblk0p1): Filesystem has been set read-only
>
> と出ます。システム的にreadonlyにするのが適切なのでしょうが、アプリの運用上、このタイミングを知る方法はありますでしょうか?
mount後に、"/proc/mounts"の出力をパースすることで知ることができると思います。
このエラーメッセージは、Linuxカーネルの、
fs/fat/misc.c: fat_chain_add()
によって出力されますが、ueventを発生させる等をしない実装になっています。
> また、エラーが発生しても、read-onlyを抑制する設定に変更は可能でしょうか?
> (このあたりは、アプリ利用者のリスクにはなるのですが。。。)
ファイルシステムの破損状態にもよるのですが、fsck実行後に、rwでremount
してみてはいかがでしょうか。