最近まったく同じ問題を抱えていました(画面とデジタイザーが完全に壊れ、adbがオフになっているAndroid 4.0を実行している友人のNexus Sで):
adbを有効にして回復システムを実行します。次に、adbコンソールを使用してデバイスのデータにアクセスし、バックアップを作成します。Nexus Sでは、SDカードを使用してデバイスからデータを取得できないため、そのためにadbを使用する必要があります。
前提条件:
- 電話機には、ブートコマンドが有効なfastbootモードがあります
- 電話は引き続き機能します(画面を除く)
- SDKがインストールされている(作業adb + fastboot実行可能ファイルと共に)
- /tmp/cwm.zipにダウンロードされたCWMリカバリイメージ(開始時にadbが有効になっています)
- uudecodeがインストールされたLinux(Ubuntuのパッケージ「sharutils」の一部)
方法:
a)デバイスをfastbootモードで起動し、この方法でCWMリカバリを起動します
me@workstation:~$ fastboot boot /tmp/cwm.zip
b)CWMが起動するまでしばらく待ってから、デバイスにログインします
me@workstation:~$ adb shell
shell@android:/ $ mkdir -p /tmp/backup/data /tmp/backup/sdcard
電話機に応じて、DATA_DEVとSDCARD_DEVを実際のデバイス名に置き換えます。ほとんどの場合、次のいずれかです。
- DATA_DEV:
/dev/block/mtdblock*
- SDCARD_DEV:
/dev/block/mmcblk*
df
コマンドを使用して、サイズで候補を見つけます。
shell@android:/ $ mount -oro <DATA_DEV> /tmp/backup/data
shell@android:/ $ mount -oro <SDCARD_DEV> /tmp/backup/sdcard
shell@android:/ $ exit
me@workstation:~$ adb shell tar czf - /tmp/backup \| uuencode foo | uudecode -o - > /tmp/backup.tar.gz
警告と詳細説明:
- なんで
uuencode
?ADBコンソールはデータストリームをインターセプトするようであり、明らかに各単一ラインフィードの前にキャリッジリターンを挿入します。adbのstdoutを介してデータを送信する前にデータをUuencodingすることで、それを防ぎます。
- 暗号化されたデバイスで は機能しません
- マウントされていないデバイスでプロセスを繰り返して、すべてを
/dev/block/*
1つずつ送信し、後でどのデバイスが何のためにあるかを把握することもできます。
- 適切なCWMリカバリイメージを自分で見つける必要があります