root化したらまずバックアップしよう!!

MTKスマホをroot化したらすぐにバックアップしておきましょう。


バックアップする意味

root化をするとシステムファイルの書き換えができるようになります。
誤って必要なファイルを書き換えたり、消してしまった場合スマートホンが起動しなくなってしまう時があります。
これを「brick(ブリック)する」「文鎮化」と言います。

この場合、メーカーが公開しているFWアップデートファイルを使用して出荷時前までに戻すことで復旧することが出来ることがあります。
しかし、サポートの不安定な中国スマートホンではアップデートファイルが公開されていないことがほとんどです。
こうなってしまうとファイルが公開されるのを待つか、諦めるしか無くなってしまいます。
バックアップを取っておけば復旧できる可能性を上げることができます。

カスタムリカバリのバックアップ機能を使う

カスタムリカバリが導入できていればとても簡単にバックアップを取ることが出来ます。



CWMR、TWRP共に「Backup」を実行するだけで済みます。
バックアップしたファイルを書き戻すには「Restore」メニューからバックアップしたファイルを選択します。

MTKDroidToolsでバックアップ

MTK65XX系のスマートホンのみ対応ですが、
この記事のMTKDroidToolsを使用してバックアップを取ることが出来ます。


バックアップしたいスマートホンをUSBデバッグモードで接続し、「Backup」ボタンを押すだけでバックアップが出来ます。
バックアップファイルはスマートホン本体のストレージとPC側の2箇所に保存されます。

MTKDroidToolsでバックアップされるものは2種類あり、パーティションで区切られている各領域をそのままイメージファイル(.img)で保存したものとSYSTEM領域の内容を個別のファイルごとに保存したものがあります。

ADBを使って個別のファイルでバックアップ

現在、最新のMTK67XX系ではMTKDroidToolsが使用できないためツールが行っていたことを手動で行うしか方法がありません。

adb pull /system C:\backup\system\
とするとSYSTEM領域の内容がファイルごとにダウンロードされます。

バックアップした内容は、例えばsetting.apkなどシステムファイルの書き換えに失敗してそのことに気づいた時に有効です。
この場合はadb pushコマンドを使用してバックアップしておいたファイルを個別に書き戻すことで直すことができます。
adb push C:\backup\system\app\setting.apk /system/app/setting.apk
また、例えばsystem/appフォルダの内容を全て復元したい時は
adb push C:\backup\system\app\. /system/app/
とすることで可能です。

※adb pullではリンクファイルがダウンロードされないため、SYSTEM領域全体をまとめて復元することはできません。

DDコマンドを使ってイメージファイルとしてバックアップ

Busyboxがインストールされているとシェルでddコマンドが使用できます。
これを使用して各領域をイメージファイルとして保存します。
MTK67XX系の機種は大体このコマンドで各領域をバックアップできます。

adb shell mkdir -p /storage/sdcard1/backup
adb shell su -c "dd if=/dev/block/mmcblk0boot0 of=/storage/sdcard1/backup/preloader.bin bs=512c count=512 skip=4"
adb shell su -c "dd if=/dev/block/platform/mtk-msdc.0/by-name/boot of=/storage/sdcard1/backup/boot.img"
adb shell su -c "dd if=/dev/block/platform/mtk-msdc.0/by-name/cache of=/storage/sdcard1/backup/cache.img"
adb shell su -c "dd if=/dev/block/platform/mtk-msdc.0/by-name/lk of=/storage/sdcard1/backup/lk.bin"
adb shell su -c "dd if=/dev/block/platform/mtk-msdc.0/by-name/logo of=/storage/sdcard1/backup/logo.bin"
adb shell su -c "dd if=/dev/block/platform/mtk-msdc.0/by-name/recovery of=/storage/sdcard1/backup/recovery.img"
adb shell su -c "dd if=/dev/block/platform/mtk-msdc.0/by-name/secro of=/storage/sdcard1/backup/secro.img"
adb shell su -c "dd if=/dev/block/platform/mtk-msdc.0/by-name/system of=/storage/sdcard1/backup/system.img"
adb shell su -c "dd if=/dev/block/platform/mtk-msdc.0/by-name/userdata of=/storage/sdcard1/backup/userdata.img"
adb shell chmod 777 /storage/sdcard1/backup/*
/storage/sdcard1はSDカードです。内部ストレージは/storage/sdcard0になりますが容量が足りずuserdata領域をバックアップ出来ないのでSDカードを使用します。
mkdirでSDカードにbackupフォルダを作成し、バックアップを行っています。最後にchmodでアクセス権を変更しPCで読み込みができるようにしておきます。

復元したい時は先ほどのddコマンドの「if=」と「of=」を入れ替えます。
例えばSYSTEM領域の書き換えに失敗し原因が分からない時に有効です。この時はsystem.imgを書き戻します。
書き戻しを行うと全てがバックアップ時の状態に戻ります。
挙動がおかしくなった時はシェルから書き戻しが出来ますし、カスタムリカバリを導入している場合は起動しなくなってもリカバリのシェルから書き戻すことができます。




0 件のコメント :