Armadilloフォーラム

USBメモリからのバージョンアップ失敗について

n.yamamoto

2015年5月11日 16時35分

Yamamotoです。

USBメモリに登録したイメージファイルによるバージョンアップで、バージョンアップ完了後の再起動でCRCエラー等により起動できなくなる件で確認です。

以前から、時々上記現象についてアドバイスを頂いておりますが最近少し解ってきたことがあります。

どうも作成したイメージファイルをUSBへコピーした際に、たまにコピー不良によりromfs.img.gzのお尻の方に差異が出ており、そのままバージョンアップしたためにエラーで起動できなくなるようです。

WindowsでUSBデバイレベルでチェックしても異常にならないのですが、ファイルをバイナリレベルで比較すると差異が出てしまい気づかずにバージョンアップに使用して失敗するようです。

で、確認ですがバージョンアップする前に元のファイルのCRCチェックを行うようなC言語の関数とかありますか?

関数でなくても、何かチェック方法はありますか?

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

コメント

中村です。

> で、確認ですがバージョンアップする前に元のファイルのCRCチェックを行うようなC言語の関数とかありますか?
>
> 関数でなくても、何かチェック方法はありますか?

MD5チェックサムはどうですか?

アットマークテクノさんの公式イメージのダウンロードサイトには、
イメージファイルと一緒にMD5チェックサムファイルがおいてあります。
たとえば、ここ。
http://download.atmark-techno.com/armadillo-460/image/

これと同じ方法です。

説明(検査の仕方)は、ここにあります。
http://armadillo.atmark-techno.com/faq/checksum

MD5チェックサムの生成方法は、ググれば出てくると思います。

--
なかむら

Yamamotoです。

回答いただいた内容を再確認して、以下の手順と言う事でしょうか?

例:linux-a460-1.00.bin.gz ファイル使用
①linux-a460-1.00.bin.gzのmd5ファイルをmd5sumのリダイレクトで作成
~$ md5sum linux-a460-1.00.bin.gz >linux-a460-1.00.bin.gz.md5

②USBにlinux-a460-1.00.bin.gzとlinux-a460-1.00.bin.gz.md5をコピー

③USBからのバージョンアップ時(ユーザプログラムによる)に以下を実施
”md5sum -c linux-a460-1.00.bin.gz.md5 >md5.txt"

④md5.txtの内容から(”linux-a460-1.00.bin.gz: OK”)
": OK”があれば正常なイメージファイルと判断、それ以外であれば不正イメージと判断

⑤正常イメージならバージョンアップを実施

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

中村です。

> 回答いただいた内容を再確認して、以下の手順と言う事でしょうか?

そんな感じでOKだと思います。

> ③USBからのバージョンアップ時(ユーザプログラムによる)に以下を実施
> ”md5sum -c linux-a460-1.00.bin.gz.md5 >md5.txt"
>
> ④md5.txtの内容から(”linux-a460-1.00.bin.gz: OK”)
> ": OK”があれば正常なイメージファイルと判断、それ以外であれば不正イメージと判断

この部分は、私は次のようにやってます。

md5sum -c linux.bin.gz.md5
if [ $? -ne 0 ]; then
    エラー処理
fi

--
なかむら

Yamamotoです。

有難うございます。

上記で、検討します。
ただ、如何イメージファイルのUSBへの書込み不良だけではないようです。

使用している処から、同じUSBで複数台のバージョンアップを実施時に、難題か無事バージョンアップ出来たのに途中で1台だけ異常で起動できなくなっている事があるとの情報を得ました。

引き続き、検証してみます。