Androidのカーネルをいじる機会があり、カスタムカーネルのバックアップやリストアにClockworkMod Recovery(Touch Recovery 6.0.3.1)を便利に使わせてもらっています。
ClockworkMod Recoveryのバックアップ(create image zip)では、/data以下のファイルがバックアップされません。
そこで、ClockworkMod Recoveryで取ったバックアップに/data以下の任意のファイルを追加し、ClockworkMod Recoveryでリストア可能にした「復元セット」を作ってみました。
※注意※
キャリア・メーカーの保証対象外となる操作です。
以下内容をお試しの際は自己責任にてお願いします。
環境
- Nexus7
- ブートローダーアンロック済み
- root権限取得済み
- Android 4.2.2
- カスタムカーネル
- ClockworkMod Recovery(Touch Recovery) 6.0.3.1
- Nexus7に接続してadb, fastbootコマンドが使用可能なPC
- 7z(7zip)コマンドが使用可能なPC
準備
/data以下に次のファイルとディレクトリを復元することを目的とします。
/data/local/test/test.txt /data/app/Test.apk
※APKは/data/app以下に設置します。
復元対象のファイルとディレクトリは、あらかじめtarでまとめておきます。
Nexus7向けのClockworkMod Recoveryを以下よりダウンロードします。
今回はタッチ操作が可能なTouch Recoveryの方をダウンロードしました。
http://www.clockworkmod.com/rommanager
バックアップ
ClockworkMod Recoveryでバックアップをとります。
ClockworkMod Recoveryを起動します。
ClockworkMod Recoveryのメニューから
backup and restore --> create image zip
を選択します。
Nexus7の画面に「Done creating image zip!」と表示されると成功です。
/data/media/clockworkmod以下にimage.zipが作成されます。
(Nexus7の画面では「The zip can be found at: /sdcard/clockworkmod/image.zipと表示されます。)
image.zipを作業用のPCにコピーします。
バックアップしたファイルを編集
image.zipに含まれるファイルを追加・削除する際は7zコマンドを使用します。
(unzipコマンドで展開、zipコマンドで圧縮だとうまく行きませんでした。)
image.zipには以下のファイルが含まれています。
image.zipから「image-edify」と「META-INF」を展開します。
image-edifyを編集します。
※edify scriptの書き方とは異なります。
META-INF/com/google/android/update-binaryを編集します。
image.zipから「image-edify」と「META-INF」を削除し、編集した「image-edify」と「META-INF/com/google/android/update-binary」をimage.zipに追加します。
復元対象のファイルとディレクトリをまとめたdata.tarをimage.zipに追加します。
これでClockworkMod Recovery用の「復元セット」のできあがりです。
「復元セット」をリストアする
ClockworkMod Recovery用の「復元セット」を別のNexus7(Android4.2, ブートローダーアンロック済み)にリストアします。
image.zipファイルをリストア対象のNexus7にコピーします。
ClockworkMod Recoveryを起動します。
ClockworkMod Recoveryのメニューから次のメニューを選択して念のため、キャッシュをクリアします。
wipe cache partition (キャッシュの削除) advanced --> wipe dalvik cache (Dalvikキャッシュの削除)
(※今回は上書きが目的のため「wipe data/factory reset」は選択しません)
ClockworkMod Recoveryのメニューから次のメニューを選択します。
install zip from sdcard --> choose zip from sdcard --> 0/ --> image.zip
Nexus7の画面に「Install from sdcard complete.」と表示されると完了です。
再起動すると/data以下に目的のファイルとディレクトリがリストアされます。
新規で作成したファイルやディレクトリは、user:system, group:systemでリストアされていました。
バックアップ対象端末の/system/app以下にSuperuser.apkが含まれていたので、リストアした端末でもroot権限が取得できていました。
ClockworkMod Recovery用の「復元セット」を作っておくと、複数のAndroid端末に同じ環境を簡単に作れるので便利です。