ブログ

Armadillo-600シリーズ:セルフ開発のバックアップ・復元(ddコマンド)

at_takuma.fukuda
2020年4月8日 17時08分

*注意:この記事でご案内する手法は、あくまでも同一の機器においてバックアップ・復元を行うためのものであり、
複数機器に対して複製を行うためのものではありません。

Armadillo実機上でアプリケーション開発を行っている際に開発中のもののバックアップを取る場合、
作成・編集を行ったファイル・フォルダをコピーして保存することが多いと思われます。
しかし、複数のファイルとインストールしているパッケージ・設定内容などを含めて管理するのは非常に手間がかかります。
Armadillo-600シリーズの場合はハードウェア拡張のためにカーネルやDTB等も都度変更していると思いますので、そこも併せて組み合わせを管理することはさらに手間がかかります。
そのため、そのような環境を含めて一括でバックアップ・復元をする手段があればより効率的に開発を進められるかと思われます。

Debian Linuxには「dd」というコマンドがあります。
ファイルをコピーするためのコマンドで、HDDのパーティションまるごとのコピーなどに使われます。
ddコマンドを利用して、Armadilloのルートファイルシステムが格納されているeMMCのパーティションを丸ごと一つのファイルとしてバックアップすることが可能です。

実施にあたってはSDブートが必要になります。SDブートの実施手順については以下をご参照ください
https://manual.atmark-techno.com/armadillo-640/armadillo-640_product_manual_ja-1.13.0/ch14.html

以下、USBメモリにバックアップファイルを保存する場合の手順を案内します。

USBメモリをマウントします
[armadillo ~]$ mount /dev/sda1  /mnt
eMMCのパーティション2をまるごとコピーし、USBメモリ上にbackup.imgという名前のファイルとして出力します。
[armadillo ~]$ dd if=/dev/mmcblk0p2  of=/mnt/bakup.img conv=fsync
コピーが完了したらUSBメモリのマウントを解除します
[armadillo ~]$ umount /mnt

以上の手順にてバックアップが完了します。eMMCのパーティションを丸ごとコピーするためサイズの大きなファイルとなるので、圧縮して管理することをお勧めいたします。

バックアップデータを実機上に再現する際も、同様にSDブート実行の上で以下のようにコマンドを実行します。

[armadillo ~]$ mount /dev/sda1  /mnt
USBメモリ上のbackup.imgという名前のファイルを読みだし、eMMCのパーティション2に書き込みます
[armadillo ~]$ dd if=/mnt/bakup.img of=/dev/mmcblk0p2 conv=fsync
[armadillo ~]$ umount /mnt

Armadillo-640では、LinuxカーネルやDTBもルートファイルシステムと同じパーティションに格納されているため、上記の手順にてLinuxカーネル・DTBも同時にバックアップされます。