ブログ

Armadillo-400シリーズ:NORに書き込み済みのイメージのチェック方法

at_kazutaka.bito
2019年4月3日 14時53分

Armadillo-400シリーズで、NORに書き込み済みのイメージがオリジナルのイメージと同じかどうか確認する方法です。

ここでは、例として、ブートローダー、カーネル、ユーザーランドのオリジナルのイメージのファイル名が
 loader-armadillo4x0-v3.11.0.bin
 linux-a400-2.06.bin.gz
 romfs-a440-2.04.img.gz
のものをNORに書き込み済みとします。

1.オリジナルのイメージのサイズとチェックサムを確認

オリジナルのイメージのサイズとチェックサムを確認します。
(下記は、開発環境(ATDE)で確認しています。)

ファイルサイズは、lsコマンド(-lオプション)で確認できます。

atmark@atde:~$ ls -l loader-armadillo4x0-v3.11.0.bin
-rwxrwxrwx 1 atmark atmark    52168  4月 24  2018 loader-armadillo4x0-v3.11.0.bin
 
atmark@atde:~$ ls -l linux-a400-2.06.bin.gz
-rw-r--r-- 1 atmark atmark  3144805  3月 31  2018 linux-a400-2.06.bin.gz
 
atmark@atde:~$ ls -l romfs-a440-2.04.img.gz
-rwxrwxrwx 1 atmark atmark 15294660  4月 24  2018 romfs-a440-2.04.img.gz


チェックサムはmd5sumコマンドで確認できます。

atmark@atde:~$ md5sum loader-armadillo4x0-v3.11.0.bin
bfa6873b442add42181c668195ed13b5  loader-armadillo4x0-v3.11.0.bin
 
atmark@atde:~$ md5sum linux-a400-2.06.bin.gz
703e56060b44efe285e6b52f839fb457  linux-a400-2.06.bin.gz
 
atmark@atde:~$ md5sum romfs-a440-2.04.img.gz
acad00e7e7dfe19d3accb5fce635a655  romfs-a440-2.04.img.gz

以上の結果より、
ブートローダー:loader-armadillo4x0-v3.11.0.bin
 サイズ:52168[Byte]
 チェックサム:bfa6873b442add42181c668195ed13b

カーネル:linux-a400-2.06.bin.gz
 サイズ:3144805[Byte]
 チェックサム:703e56060b44efe285e6b52f839fb457

ユーザーランド:romfs-a440-2.04.img.gz
 サイズ:15294660[Byte]
 チェックサム:acad00e7e7dfe19d3accb5fce635a655
であることが確認できました。

2.オリジナルのイメージとNORに書き込んだイメージをチェックサムで比較

Armadilloを起動します。
(以下、Aramdillo-440での実施例)

ブートローダー、カーネル、ユーザーランドが書き込まれているNORの領域(デバイスファイル)
 ブートローダー:/dev/mtd0
 カーネル:/dev/mtd1
 ユーザーランド:/dev/mtd2
から、オリジナルのファイルサイズ分だけのデータを取り出して、チェックサムを確認します。

基本的な手順は、

cat [NORの領域(デバイスファイル名)] | head -c [オリジナルのファイルサイズ] > /home/ftp/pub/temp

で、
/home/ftp/pub/temp(※)
にNORに書き込まれているイメージをコピーして、

md5sum /home/ftp/pub/temp

で確認したチェックサムが、オリジナルのチェックサムと同じであることを確認します。

コピーしたイメージは、都度、削除します。

rm /home/ftp/pub/temp


※)イメージのファイルサイズが大きいため、ramfsである
/home/ftp/pub/
の下にイメージをコピーしています。
メモリの使用量によって、容量不足により/home/ftp/pub/にコピーできない場合は、
USBメモリをマウントして、USBメモリ上にコピーする方法がとれます。

上記の基本の手順に基づいて、本例の各イメージのチェックサムを確認します。

ブートローダー(本例では、オリジナルのファイルサイズが52168[Byte])の場合、

[root@armadillo440-0 (ttymxc1) ~]# cat /dev/mtd0 | head -c 52168 > /home/ftp/pub/temp
[root@armadillo440-0 (ttymxc1) ~]# md5sum /home/ftp/pub/temp
bfa6873b442add42181c668195ed13b5 /home/ftp/pub/temp
[root@armadillo440-0 (ttymxc1) ~]# rm /home/ftp/pub/temp


カーネル(本例では、オリジナルのファイルサイズが3144805[Byte])の場合、

[root@armadillo440-0 (ttymxc1) ~]# cat /dev/mtd1 | head -c 3144805 > /home/ftp/pub/temp
[root@armadillo440-0 (ttymxc1) ~]# md5sum /home/ftp/pub/temp
703e56060b44efe285e6b52f839fb457 /home/ftp/pub/temp
[root@armadillo440-0 (ttymxc1) ~]# rm /home/ftp/pub/temp


ユーザーランド(本例では、オリジナルのファイルサイズが15294660[Byte])の場合、

[root@armadillo440-0 (ttymxc1) ~]# cat /dev/mtd2 | head -c 15294660 > /home/ftp/pub/temp
[root@armadillo440-0 (ttymxc1) ~]# md5sum /home/ftp/pub/temp
acad00e7e7dfe19d3accb5fce635a655 /home/ftp/pub/temp
[root@armadillo440-0 (ttymxc1) ~]# rm /home/ftp/pub/temp


それぞれのチェックサム(md5sum)の結果が、 上記1の手順で確認したオリジナルのチェックサムと同じかどうかで、
NORに書きこまれているイメージをチェックすることができます。