Armadilloフォーラム

SDカードがリードオンリーになる

uq_yoshida

2015年12月28日 10時59分

お世話になっております。
吉田と申します。

IoTにSDカードをいれて利用しているお客様がいらっしゃるのですが、
下記、連絡が来ました。

> 現在、SDをRW設定でマウントして使っていますが、
> 稀に ROでマウントされてしまいます。
> 事象として 3件発生しました。
>
> SDが ROでマウントされてしまうような情報をお持ちでしょうか?
>
>以下、復帰条件になります。
> ①SDを抜いて、違うSDを取り付けて起動したタイミング:1件
> ②電源の OFF/ONのタイミング:2件

SDカードを入れた状態で起動する際に、
SDがソフト的にReadOnlyになってしまうようで、
結構な頻度で頻発しているようです。

何か情報をお持ちの方いらっしゃったら、
ご教授いただけませんでしょうか?

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

以上

コメント

at_yuma.arakawa

2016年1月4日 17時37分

> > SDが ROでマウントされてしまうような情報をお持ちでしょうか?
現時点の情報では適切なアドバイスをすることができません。

・SDカードのメーカー
・使用しているACアダプタ
をお教えいただけますでしょうか。

なお、SDカードのコントローラー側でROにおちいっていた場合、
基本的にはSDカードのメーカーにお問い合わせいただくしか、原因を究明する方法はありません。

吉田です。
お世話になっております。

> ・SDカードのメーカー
> ・使用しているACアダプタ
> をお教えいただけますでしょうか。

SDカードは下記です。

1)SAMSUNG EVO 16GB microSDHC UHS-I Card Class10 ※3回
2)Transcend 16GB microSDHC ※1回

ACアダプタは下記です。
・ADAPTER TECH. AC ADAPTER . Model:STD-12020U . Input:100-240V/Output 12V 2A 24WMAX

起動してからコンソールからログイン可能になって、
1分ほどで以下のログを貰えます。

FAT-fs (mmcblk0p1): error, fat_free_clusters: deleting FAT entry beyond EOF
FAT-fs (mmcblk0p1): Filesystem has been set read-only

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

以上

at_yuma.arakawa

2016年1月5日 18時53分

> 1)SAMSUNG EVO 16GB microSDHC UHS-I Card Class10 ※3回
> 2)Transcend 16GB microSDHC ※1回
複数のメーカーのSDカードで発生していることから、
特定のメーカー製のSDカードにのみ発生する問題では無いように見えます。
 

> ・ADAPTER TECH. AC ADAPTER . Model:STD-12020U . Input:100-240V/Output 12V 2A 24WMAX
電源が安定していないことも原因として考えられますので、
以下のFAQを参考に、推奨品のACアダプタで試してみると良いかと思います。

- FAQ : ACアダプタは何を使えば良いですか?
http://armadillo.atmark-techno.com/faq/ac-adapter
 

> FAT-fs (mmcblk0p1): error, fat_free_clusters: deleting FAT entry beyond EOF
> FAT-fs (mmcblk0p1): Filesystem has been set read-only
エラーはFATの整合性が取れなくなっている(*1)ことを示しており、
FATが壊れているためにread-onlyに陥っています。

(*1): 使用中クラスタのチェーンを解放する過程で、
チェーンの終端にたどり着く前に未使用クラスタが発見されてしまったことを示しています。
エラーメッセージ自体は、linux-3.14-at5において以下の場所で出力していますので、
詳しくはソースコードを参照してみてください。
- fs/fat/fatent.c 563行目
 

なお、SDカード上の内容(今回の場合はFAT)が壊れる要因としては、
1. SDカードの寿命
2. SDカードの運用上の問題
が考えられます。

特に2について、以下のような操作を行っていないか、今一度確認してみてください。
1. SDカードの電源の瞬断
2. umountせずにArmadilloの電源を切る、あるいはSDカードを取り外す

FYI 本質的解決法ではありませんが。
齊藤と申します
以前Armadillo2xxにUSBメモリを挿して長期無人運用してたときには、
rcスクリプトを修正してUSBメモリのマウント前にfsck -y を(fsck.vfat -y /dev/sda1 だったかな)
を行なうようにしていました。