ブログ

Armadillo-IoT G3 G3L Armadillo-X1:セルフ開発のバックアップ・復元(ddコマンド)

at_takuma.fukuda
2020年4月12日 14時11分

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

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

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

実施にあたってはSDブートが必要になります。SDブートの実施手順については以下をご参照ください
Armadillo-IoT G3
https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_product_manual_ja-2.4.0/ch15.html
Armadillo-IoT G3L
https://manual.atmark-techno.com/armadillo-iot-g3l/armadillo-iotg-g3l_product_manual_ja-2.1.4/ch15.html
Armadillo-X1
https://manual.atmark-techno.com/armadillo-x1/armadillo-x1_product_manual_ja-2.1.5/ch14.html

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

USBメモリをマウントします
[armadillo ~]$ mount /dev/sda1  /mnt
eMMCのパーティション2をまるごとコピーし、USBメモリ上にbackup.imgという名前のファイルとして出力します。
[armadillo ~]$ dd if=/dev/mmcblk2p2  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/mmcblk2p2 conv=fsync
[armadillo ~]$ umount /mnt

Armadillo-IoT G3 G3L Armadillo-X1はLinuxカーネルおよびDTBはeMMCのパーティション1に格納されています。
そのため、こちらもバックアップ必要な場合には上記手順の「mmcblk2p2」を「mmcblk2p1」に置き換えてバックアップおよび復元を試みてください。