Как сделать бэкап Android-устройства перед прошивкой. Как сделать бэкап Android-устройства перед прошивкой Неизвестная структура rom бэкап невозможен

Здравствуй, Хабрахабр.

Общая информация

Это руководство предназначено для помощи в создании полной резервной копии вашего устройства (вся память со всеми разделами) или одного раздела (в том числе sdcards и т.д.) непосредственно на компьютер:
  • На уровне Блоков памяти (с помощью команды dd): для отдельных разделов или полностью всей памяти (все разделы). Резервная копия всегда будет иметь тот же размер, который имеет сохраняемый раздел.
  • На уровне Файлов (с помощью команды tar): только для отдельных разделов. Копия будет содержать только файлы и папки, которые имеются на устройстве, таким образом занимая гораздо меньше места, в зависимости от того, на сколько заполненным будет раздел.

Данная инструкция применима, когда аппарат включен или находится в ClockworkMod Recovery (в данных случаях ADB будет работать, в режиме Fastboot данная инструкция не применима). Если дополнительно не будет никаких ремарок, все команды предназначены для использования в Windows. То же касается и Linux с Unix.

Требования

  • Рутированное Android устройство;
  • Установленный Busybox на устройстве;
  • Если вы используете Linux / OS X, у вас уже имеются необходимые инструменты, для Windows скачайте Cygwin и установите вместе с ним netcat, pv и util-linux, выбрав их во время установки (от себя добавлю, что лучше пользоваться терминалом из Cygwin mintty.exe, чем родным для Windows cmd.exe, так как скорость копирования у первого доходила до 3-4 МБ\с, а у cmd.exe - максимум 400 кб\с) ;
  • Установленный ADB;
  • Убедитесь, что adb.exe находится в переменной PATH. Посмотрите и , или воспользуйтесь Path Manager ;
  • Включенный режим отладки по USB на устройстве и соответствующие драйверы, установленные в Windows. Ввод «adb devices» в терминале должен показать ваше устройство.

Разделы в устройстве

Теперь вам необходимо определить разделы и блоки на вашем устройстве, копию которых вы хотите сделать. Для копирования одного раздела можно использовать команды tar или dd, в то время как для копирования всей памяти нужно использовать только dd.

На Teclast x98 3g для определения разделов используются две команды: cat proc/partitions и mount.

Пример того, что должно появиться у Вас в ответ на их ввод в терминале.

127|root@android:/ # mount
mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
[b]/dev/block/mmcblk0p9 /system ext4 ro,noatime,data=ordered 0 0
/dev/block/mmcblk0p7 /cache ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
/dev/block/mmcblk0p6 /config ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
/dev/block/mmcblk0p10 /data ext4 rw,nosuid,nodev,noatime,noauto_da_alloc,data=ordered 0 0
/dev/block/mmcblk0p8 /logs ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
tmpfs /mnt/libreg tmpfs rw,noexec,noatime,size=4k,mode=700,gid=1003 0 0
/dev/block/vold/179:1 /storage/sdcard_ext fuseblk rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096 0 0
root@android:/ # cat proc/partitions
cat proc/partitions
major minor #blocks name

179 10 30535680 mmcblk0
179 11 229376 mmcblk0p1
179 12 32768 mmcblk0p2
179 13 32768 mmcblk0p3
179 14 131072 mmcblk0p4
179 15 131072 mmcblk0p5
179 16 131072 mmcblk0p6
179 17 786432 mmcblk0p7
179 18 262144 mmcblk0p8
179 19 1048576 mmcblk0p9
259 0 27742188 mmcblk0p10
179 30 2048 mmcblk0boot1
179 20 2048 mmcblk0boot0
179 0 30657536 mmcblk1
179 1 30657504 mmcblk1p1

Обычно на Android весь блок, содержащий все разделы, расположен в /dev/block/mmcblk0, а все остальные разделы являются его подразделами. Вы можете установить parted with GPT support , чтобы просмотреть информацию о всех разделах.

Вся память телефона -> /dev/block/mmcblk0 (хотя, на некоторых телефонах, это может быть и sdcard).
Разделы -> все зависит от конкретного устройства. Обычно в /dev/block/platform/dw_mmc/by-name/ перечислены все разделы для данного устройства.

Резервное копирование всей памяти (посредством adb)

Подключите телефон с включенным режимом отладки по USB к компьютеру.

Что касается Teclast x98 3g и того случая, когда аппарат не загружается (bootloop). Очень важно, чтобы до всего этого случившегося был включен режим отладки по USB. Выключите полностью планшет, отсоедините все кабели, дайте пару секунд на «отдых» и подключите кабель от компьютера к планшету, должна появиться такая большая белая батарея, которая будет показывать, что идет процесс зарядки, вот только тогда, даже в выключенном состоянии можно будет работать с аппаратом через терминал и adb.

Запустите Cygwin Терминал и введите (при необходимости замените mmcblk0):

adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox dd if=/dev/block/mmcblk0

Вы увидите мигающий курсор на следующей строке слева. На данный момент аппарат ожидает передачи Блока по сети.

adb forward tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw

Вы увидите, как начнет увеличиваться размер файла до тех пор, пока полностью не скопируется весь выбранный вами Блок. Теперь у вас имеется полный бекап аппарата в raw формате. Вы можете увидеть всё содержимое в скопированном Блоке с помощью gptfdisk, доступного для Windows, Linux и других ОС (официальный сайт или ). Аналогичное вы сможете сделать при помощи ClockworkMod Recovery, но первоначально необходимо смонтировать Раздел /system, так как в BusyBox, входящем в ClockworkMod, отсутствует netcat, потому вам необходимо использовать netcat из /system раздела Вашего устройства.

При помощи определенных инструментов в Linux вы можете изменять и извлекать необходимые Разделы из всего Блока.

Вы можете использовать ADB через WiFi, аналогично как и Wi-Fi ADB .

Резервное копирование всей памяти (через WiFi)

Ссылка на автора: Nandroid directly to computer w/o sdcard .

Необходимо:

  • Установленный FTP сервер на компьютере или другом устройстве;
  • Пользователь с паролем;
  • Установленный порт для FTP сервера, по умолчанию 21, но в данном примере используется 40;
  • Домашняя директория пользователя с правами записи.

Правилом хорошего тона будет копирование myfifo в /cache, а не в /data, так как можно случайно затереть важные данные в случае использования raw данных для восстановления.

Запустите Cygwin Терминал и введите:

adb shell
su
mkfifo /cache/myfifo
ftpput -v -u user -p pass -P 40 COMPUTER_IP block.raw /cache/myfifo

Откройте другой Cygwin Терминал и введите:

adb shell
su
dd if=/dev/block/mmcblk0p12 of=/cache/myfifo

Некоторые замечания:

  • FIFOs можно сделать только на Linux Native файловых системах, FAT для этого не подойдет;
  • Процесс чтения Раздела с устройства никоим образом его не видоизменяет.

Резервное копирование всей памяти (через USB-модем или Wi-Fi-модем)

Для этого необходимо отключить все сетевые соединения на компьютере, кроме того, с помощью которого вы будете осуществлять процесс копирования.
Как только соедините компьютер с Android устройством, вы сможете просмотреть IP компьютера и IP устройства в «Свойствах соединения». IP - будет являться IP самого компьютера, а Gateway будет содержать IP Android устройства.
  • Wi-Fi модем: Компьютер < - Wi-Fi ---> Android устройство < - 3G ---> Интернет
  • USB модем:
    Компьютер < - USB ---> Android устройство < - Wi-Fi ---> Интернет
    Компьютерные < - USB ---> Android устройство < - 3G ---> Интернет

Процесс абсолютно аналогичный передачи данных через Wi-Fi, единственное, скорость передачи данных будет значительно выше, потому что компьютер и Android устройство соединены непосредственно, вместо того, чтобы использовать роутер в качестве шлюза. В данном случае шлюзом будет само Android устройство. USB-модем имеет самый высокий уровень передачи данных.

Резервное копирование одного Раздела (raw = точная побитовая копия раздела)

Все аналогично тому, что было описано выше, только необходимо заменить mmcblk0 на соответствующий Раздел. Вы можете использовать в данном конкретном случае ПО для просмотра содержимого скопированного Раздела. В зависимости от файловой системы: DiskInternals Linux Reader , плагин для Total Commander и ImDisk Virtual Disk Driver . Можно также использовать ПО для восстановления данных с отдельных разделов, например, Recuva совместно с VHD Tool или инструменты командной строки, включенные в сами операционные системы.

Резервное копирование одного Раздела (tar = копируются только файлы и папки)

В данном случае необходим уже смонтированный раздел. (Как найти разделы на Teclast x98 3g я описывал выше.)
Чтобы увидеть список всех смонтированных разделов в Cygwin Терминале введите:

Теперь вы должны знать, где и какой раздел монтируется, например, Firmware смонтирована в /system, которая по сути является ROM.
В данном случае вам придется открыть три Cygwin Терминала, вследствие ограничений, накладываемых самим Android:

Откройте первый Cygwin Терминал и создайте FIFO, например, в /cach, и перенаправте tar в него:

adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox mkfifo /cache/myfifo
/system/xbin/busybox tar -cvf /cache/myfifo /system

Вы должны это сделать потому, что перенаправление tar в stdout (c "-") не работает на Android и портит сохраняемый файл.

Откройте второй Cygwin Терминал:

adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox cat /cache/myfifo

Откройте третий Cygwin Терминал:

adb forward tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0.5 > system.tar

Полученный tar файл вы можете просмотреть с помощью Winrar, Total Commander, PeaZip и т.д. Обратите внимание, вы не должны извлекать файлы или редактировать их, так как tar формат сохраняет данные доступа и владельца для каждого файла, которые исчезают при извлечении в FAT / NTFS разделы.

Теги: Добавить метки

Здравствуй, Хабрахабр.

Общая информация

Это руководство предназначено для помощи в создании полной резервной копии вашего устройства (вся память со всеми разделами) или одного раздела (в том числе sdcards и т.д.) непосредственно на компьютер:
  • На уровне Блоков памяти (с помощью команды dd): для отдельных разделов или полностью всей памяти (все разделы). Резервная копия всегда будет иметь тот же размер, который имеет сохраняемый раздел.
  • На уровне Файлов (с помощью команды tar): только для отдельных разделов. Копия будет содержать только файлы и папки, которые имеются на устройстве, таким образом занимая гораздо меньше места, в зависимости от того, на сколько заполненным будет раздел.

Данная инструкция применима, когда аппарат включен или находится в ClockworkMod Recovery (в данных случаях ADB будет работать, в режиме Fastboot данная инструкция не применима). Если дополнительно не будет никаких ремарок, все команды предназначены для использования в Windows. То же касается и Linux с Unix.

Требования

  • Рутированное Android устройство;
  • Установленный Busybox на устройстве;
  • Если вы используете Linux / OS X, у вас уже имеются необходимые инструменты, для Windows скачайте Cygwin и установите вместе с ним netcat, pv и util-linux, выбрав их во время установки (от себя добавлю, что лучше пользоваться терминалом из Cygwin mintty.exe, чем родным для Windows cmd.exe, так как скорость копирования у первого доходила до 3-4 МБ\с, а у cmd.exe - максимум 400 кб\с) ;
  • Установленный ADB;
  • Убедитесь, что adb.exe находится в переменной PATH. Посмотрите и , или воспользуйтесь Path Manager ;
  • Включенный режим отладки по USB на устройстве и соответствующие драйверы, установленные в Windows. Ввод «adb devices» в терминале должен показать ваше устройство.

Разделы в устройстве

Теперь вам необходимо определить разделы и блоки на вашем устройстве, копию которых вы хотите сделать. Для копирования одного раздела можно использовать команды tar или dd, в то время как для копирования всей памяти нужно использовать только dd.

На Teclast x98 3g для определения разделов используются две команды: cat proc/partitions и mount.

Пример того, что должно появиться у Вас в ответ на их ввод в терминале.

127|root@android:/ # mount
mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
[b]/dev/block/mmcblk0p9 /system ext4 ro,noatime,data=ordered 0 0
/dev/block/mmcblk0p7 /cache ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
/dev/block/mmcblk0p6 /config ext4 rw,nosuid,nodev,noatime,data=ordered 0 0
/dev/block/mmcblk0p10 /data ext4 rw,nosuid,nodev,noatime,noauto_da_alloc,data=ordered 0 0
/dev/block/mmcblk0p8 /logs ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
tmpfs /mnt/libreg tmpfs rw,noexec,noatime,size=4k,mode=700,gid=1003 0 0
/dev/block/vold/179:1 /storage/sdcard_ext fuseblk rw,relatime,user_id=0,group_id=0,allow_other,blksize=4096 0 0
root@android:/ # cat proc/partitions
cat proc/partitions
major minor #blocks name

179 10 30535680 mmcblk0
179 11 229376 mmcblk0p1
179 12 32768 mmcblk0p2
179 13 32768 mmcblk0p3
179 14 131072 mmcblk0p4
179 15 131072 mmcblk0p5
179 16 131072 mmcblk0p6
179 17 786432 mmcblk0p7
179 18 262144 mmcblk0p8
179 19 1048576 mmcblk0p9
259 0 27742188 mmcblk0p10
179 30 2048 mmcblk0boot1
179 20 2048 mmcblk0boot0
179 0 30657536 mmcblk1
179 1 30657504 mmcblk1p1

Обычно на Android весь блок, содержащий все разделы, расположен в /dev/block/mmcblk0, а все остальные разделы являются его подразделами. Вы можете установить parted with GPT support , чтобы просмотреть информацию о всех разделах.

Вся память телефона -> /dev/block/mmcblk0 (хотя, на некоторых телефонах, это может быть и sdcard).
Разделы -> все зависит от конкретного устройства. Обычно в /dev/block/platform/dw_mmc/by-name/ перечислены все разделы для данного устройства.

Резервное копирование всей памяти (посредством adb)

Подключите телефон с включенным режимом отладки по USB к компьютеру.

Что касается Teclast x98 3g и того случая, когда аппарат не загружается (bootloop). Очень важно, чтобы до всего этого случившегося был включен режим отладки по USB. Выключите полностью планшет, отсоедините все кабели, дайте пару секунд на «отдых» и подключите кабель от компьютера к планшету, должна появиться такая большая белая батарея, которая будет показывать, что идет процесс зарядки, вот только тогда, даже в выключенном состоянии можно будет работать с аппаратом через терминал и adb.

Запустите Cygwin Терминал и введите (при необходимости замените mmcblk0):

adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox dd if=/dev/block/mmcblk0

Вы увидите мигающий курсор на следующей строке слева. На данный момент аппарат ожидает передачи Блока по сети.

adb forward tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw

Вы увидите, как начнет увеличиваться размер файла до тех пор, пока полностью не скопируется весь выбранный вами Блок. Теперь у вас имеется полный бекап аппарата в raw формате. Вы можете увидеть всё содержимое в скопированном Блоке с помощью gptfdisk, доступного для Windows, Linux и других ОС (официальный сайт или ). Аналогичное вы сможете сделать при помощи ClockworkMod Recovery, но первоначально необходимо смонтировать Раздел /system, так как в BusyBox, входящем в ClockworkMod, отсутствует netcat, потому вам необходимо использовать netcat из /system раздела Вашего устройства.

При помощи определенных инструментов в Linux вы можете изменять и извлекать необходимые Разделы из всего Блока.

Вы можете использовать ADB через WiFi, аналогично как и Wi-Fi ADB .

Резервное копирование всей памяти (через WiFi)

Ссылка на автора: Nandroid directly to computer w/o sdcard .

Необходимо:

  • Установленный FTP сервер на компьютере или другом устройстве;
  • Пользователь с паролем;
  • Установленный порт для FTP сервера, по умолчанию 21, но в данном примере используется 40;
  • Домашняя директория пользователя с правами записи.

Правилом хорошего тона будет копирование myfifo в /cache, а не в /data, так как можно случайно затереть важные данные в случае использования raw данных для восстановления.

Запустите Cygwin Терминал и введите:

adb shell
su
mkfifo /cache/myfifo
ftpput -v -u user -p pass -P 40 COMPUTER_IP block.raw /cache/myfifo

Откройте другой Cygwin Терминал и введите:

adb shell
su
dd if=/dev/block/mmcblk0p12 of=/cache/myfifo

Некоторые замечания:

  • FIFOs можно сделать только на Linux Native файловых системах, FAT для этого не подойдет;
  • Процесс чтения Раздела с устройства никоим образом его не видоизменяет.

Резервное копирование всей памяти (через USB-модем или Wi-Fi-модем)

Для этого необходимо отключить все сетевые соединения на компьютере, кроме того, с помощью которого вы будете осуществлять процесс копирования.
Как только соедините компьютер с Android устройством, вы сможете просмотреть IP компьютера и IP устройства в «Свойствах соединения». IP - будет являться IP самого компьютера, а Gateway будет содержать IP Android устройства.
  • Wi-Fi модем: Компьютер < - Wi-Fi ---> Android устройство < - 3G ---> Интернет
  • USB модем:
    Компьютер < - USB ---> Android устройство < - Wi-Fi ---> Интернет
    Компьютерные < - USB ---> Android устройство < - 3G ---> Интернет

Процесс абсолютно аналогичный передачи данных через Wi-Fi, единственное, скорость передачи данных будет значительно выше, потому что компьютер и Android устройство соединены непосредственно, вместо того, чтобы использовать роутер в качестве шлюза. В данном случае шлюзом будет само Android устройство. USB-модем имеет самый высокий уровень передачи данных.

Резервное копирование одного Раздела (raw = точная побитовая копия раздела)

Все аналогично тому, что было описано выше, только необходимо заменить mmcblk0 на соответствующий Раздел. Вы можете использовать в данном конкретном случае ПО для просмотра содержимого скопированного Раздела. В зависимости от файловой системы: DiskInternals Linux Reader , плагин для Total Commander и ImDisk Virtual Disk Driver . Можно также использовать ПО для восстановления данных с отдельных разделов, например, Recuva совместно с VHD Tool или инструменты командной строки, включенные в сами операционные системы.

Резервное копирование одного Раздела (tar = копируются только файлы и папки)

В данном случае необходим уже смонтированный раздел. (Как найти разделы на Teclast x98 3g я описывал выше.)
Чтобы увидеть список всех смонтированных разделов в Cygwin Терминале введите:

Теперь вы должны знать, где и какой раздел монтируется, например, Firmware смонтирована в /system, которая по сути является ROM.
В данном случае вам придется открыть три Cygwin Терминала, вследствие ограничений, накладываемых самим Android:

Откройте первый Cygwin Терминал и создайте FIFO, например, в /cach, и перенаправте tar в него:

adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox mkfifo /cache/myfifo
/system/xbin/busybox tar -cvf /cache/myfifo /system

Вы должны это сделать потому, что перенаправление tar в stdout (c "-") не работает на Android и портит сохраняемый файл.

Откройте второй Cygwin Терминал:

adb forward tcp:5555 tcp:5555
adb shell
su
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox cat /cache/myfifo

Откройте третий Cygwin Терминал:

adb forward tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0.5 > system.tar

Полученный tar файл вы можете просмотреть с помощью Winrar, Total Commander, PeaZip и т.д. Обратите внимание, вы не должны извлекать файлы или редактировать их, так как tar формат сохраняет данные доступа и владельца для каждого файла, которые исчезают при извлечении в FAT / NTFS разделы.

Теги:

  • Android
  • Nandroid backup
  • Сохранение данных
  • Перевод
Добавить метки

После того как мы скачали все необходимое, можно, например, создать в корне какого-нибудь папку Android и разложить распакованное содержимое архивов по папкам, т.е. драйвера в папку Drivers, Platform Tools в отдельную папку, SP Flash Tool в отдельную, MTK Droid Tools тоже в отдельную.

Далее включаем на своем устройстве Режим разработчика и активируем отладку по USB. Т.е. сначала заходим в Настройки -> О телефоне (Об устройстве) и кликаем несколько раз (5-7) по надписи «Номер сборки», до появления сообщения о том что Режим разработчика активирован. Далее переходим в меню Настройки -> Для разработчиков и ставим галочку на «Отладка по USB»:

После этого подключаем устройство к ПК и устанавливаем драйвера ADB (т.е. либо запустив AdbDriverInstaller.exe из архива, либо открыв диспетчер устройств и указав вручную путь к драйверам в папке Android ADB driver x64 для неизвестного устройства). В результате должно получиться так (Диспетчер устройств):

Устройство Android ADB Interface в диспетчере устройств подтверждает что у нас все готово к следующему шагу.

Ждем пока устройство определится в нем и нажимаем кнопку «Карта блоков»:

После чего нажимаем кнопку «Создать scatter файл» и сохраняем получившийся файл (у меня он назывался MT6582_Android_scatter.txt) на диск. На этом этап подготовки закончен и можно приступать непосредственно к чтению данных.

Открываем получившийся файл в Notepad++ или Word (обратите внимание, обычный блокнот не подойдет) и находим в нем строчку partition_name: CACHE:

И запоминаем то, что у вас написано в графе linear_start_addr, в данном случае это — 0x3E900000.

Отключаем телефон от ПК и выключаем его, т.е. держим кнопку выключения питания и выбираем в меню «Отключение питания», также можно отсоединить и вставить батарею. Далее запускаем SP Flash Tool и переходим в нем на закладку Readback. Далее нажимаем кнопку Add. В результате в таблице появится одна строка:

Кликаем по ней, у нас появляется запрос выбора места сохранения файла ROM_0, выбираем папку, в которую мы его хотим сохранить и на следующем экране в поле Length вводим запомненное нами ранее число (linear_start_addr):

В итоге должно получиться что-то вроде этого:

После чего подключаем выключенный телефон (!) к ПК. В этот момент желательно открыть диспетчер устройств. Пока никакие кнопки в SP Flash Tool на этом экране не нажимаем!

В момент подключения у вас определится неизвестное устройство MT65xx PreLoader и ОС предложит вам установить драйвера на него. На картинке ниже это наглядно показано. Лучше сразу перед подключением телефона открыть диспетчер устройств, чтобы «отловить» момент появления MT65xx PreLoader. Если устройство появится, а ОС не предложит автоматически установить драйвера, то это надо сделать вручную, кликнув правой кнопкой мыши на устройстве MT65xx PreLoader.

Выбираем «Выполнить поиск драйверов на этом компьютере» и указываем папку в которой находится распакованное содержимое архива mtk_xp_vista_7_8_x32_x64.zip (т.е. к этому моменту вы должны распаковать архив куда-нибудь). После того как драйвера успешно установятся, картинка в диспетчере устройств должна поменяться на такую:

Если драйвера установились — можно переходить к следующему шагу. Обратите внимание, что при подключении телефона Preloader USB VCOM Port может появляться всего на несколько секунд — это нормально, наша задача на этом этапе установить драйвера телефона, чтобы он определялся именно как Preloader USB VCOM Port, а не неизвестное устройство MT65xx PreLoader. Если вы вдруг не успели установить драйвера, а телефон включился — вытаскиваем батарею, отсоединяем телефон, вставляем батарею, подключаем телефон и повторяем процедуру.

Как только мы убедились что драйвера у нас установлены — отсоединяем телефон от ПК. Выключаем его, в открытом у нас SP Flash Tool нажимаем кнопку Readback и подключаем выключенный телефон к ПК. После этого у нас пойдет процесс считывания прошивки из телефона:

Многие пишут о затруднениях возникающих именно на этом шаге. Попробую объяснить чуть подробнее. После того как вы нажимаете кнопку Readback — SP Flash Tool переходит в режим ожидания подключения телефона, т.е. подразумевается что до этого вы успели отловить момент когда выключенный телефон у вас определяется как MT65xx PreLoader и установить на него драйвера, чтобы в COM-портах у вас появился Preloader USB VCOM Port. Если вдруг по каким-то причинам SP Flash Tool написал об ошибке, или телефон не успел подключиться — может помочь следующая методика (все описанное справедливо только если вы корректно установили драйвера и при подключении телефона у вас появляется именно Preloader USB VCOM Port): отключаем телефон от ПК, вынимаем батарею, нажимаем кнопку Readback, подключаем телефон с вытащенной батареей. В SP Flash Tool пойдет красная полоска (Download), за это время быстро вставляем батарею назад, если мы успели, то пойдет синяя полоска Readback с процентами, как на картинке:

Ждем пока процесс завершится. Создание backup’а может занимать 10-15 минут. Просто смотрим на бегущие проценты и ничего не трогаем 😉 По окончании процедуры чтения у вас появится надпись Readback Ok:

Пока у нас делается Backup самое время пояснить что же такое scatter файл и что представляет собой файл ROM_0, который мы получим на выходе. Память телефона — это обычная EMMC Flash, которая разбита на определенные разделы. Scatter файл это и есть файл описания разделов (так, например в Scatter’е есть разделы PRELOADER, RECOVERY, LOGO, ANDROID и т.п.). Назначение разделов различно, так, например в Recovery — содержится образ recovery, в logo — логотип, использующийся при загрузке системы, в Android — образ system и т.п. Файл ROM_0, который мы получаем на выходе по сути представляет собой сплошной дамп EMMC Flash в одном файле. Но чтобы воспользоваться полученным backup’ом прошивки, например, для восстановления другого аналогичного аппарата — нам еще будет необходимо разбить его на разделы. Здесь я опишу несколько способов как это сделать. Первый и самый распространенный — через MTK Droid Tools. Допустим у нас уже есть файл ROM_0 сделанный с помощью SP Flash Tool.

Включаем питание устройства (телефона) и даем ему загрузиться, после чего вновь запускаем MTK Droid Tools (режим отладки по USB на телефоне при этом, естественно, должен быть включен, а драйвера ADB установлены на ПК), переходим на закладку root, backup, recovery и нажимаем кнопку «Создать бэкап из ROM_ флэштула»:

Выбираем получившийся у нас на предыдущем шаге ROM_0 и в окне лога видим примерно следующее:

— Папка сохранения на компьютере: E:\Android\MtkDroidTools\backups\KINGSING_S1_141117_ForFlashtoolFromReadBack_150512-005322\
— scatter сохранен в файле:
E:\Work\Мегафон Login Plus\MtkDroidTools\backups\KINGSING_S1_141117_ForFlashtoolFromReadBack_150512-005322\MT6582_Android_scatter.txtкопирование завершено
— preloader.bin …скопировано … cut OK
— MBR …скопировано
— EBR1 …скопировано
— pro_info …скопировано
— nvram.bin …скопировано
— protect_f …скопировано
— protect_s …скопировано
— seccfg …скопировано
— uboot.bin …скопировано
— boot.img …скопировано

Ну и т.д. Теперь в папке сохранения, у меня это E:\Android\MtkDroidTools\backups\ у нас появляется папка с полным backup’ом нашей прошивки, разбитым на разделы (т.е. каждый раздел в отдельном файле):

На этом процесс создания Backup’а прошивки завершен. Если вы только хотели узнать как сделать backup прошивки с помощью SP Flash Tool и у вас все получилось, дальше можно не читать.

Для продвинутых

А что делать если MTK Droid Tools «не видит» телефон? Или же не получается создать scatter файл или разбить получившийся файл ROM_0 на разделы? Как получить карту разделов и есть ли возможность «разрезать» файл ROM_0 вручную? Такая возможность есть. Чтобы получить карту разделов на MTK 65xx нужно в консоли ADB дать команду — т.е. запустить в консоли adb shell и уже там набрать эту команду:

Если вдруг телефон по каким-то причинам не видится и через ADB (в этом случае я советую ознакомиться с мануалом по ADB, может быть проблема в VEN_ID устройства и его нужно просто прописать в %USERPROFILE%\.android\adb_usb.ini , то ту же самую команду можно дать и в самом телефоне, установив Terminal Emulator for Android из Google Play:

Как видите — результат точно такой же и linear_start_address раздела cache можно взять и отсюда. Да, к слову, в новых устройствах, например на базе MTK 6752, таких как Билайн Про, ZTE Q Lux и т.п. карту разделов можно получить с помощью cat /proc/partinfo. MTK Droid Tools с этими устройствами вообще не работает.

Методика получения адреса старта раздела cache, который нужен для получения ROM_0 с помощью SP Flash Tool у нас теперь есть. Также мы знаем адреса (смещения) и размеры каждого из разделов. Т.е. чтобы «порезать» ROM_0 на разделы — использовать MTK Droid Tools нам вовсе не обязательно. Это можно сделать «руками» в любом Hex-редакторе, поддерживающим функцию выделения и сохранения блока в файл (я пользуюсь консольным HIEW). Ну и в качестве примера давайте «вырежем» раздел с Recovery из получившегося ROM_0 файла.

Мы знаем (из scatter’а или из dumchar_info) его linear_start_addr: 0x4180000 и partition_size: 0x1000000. Открываем ROM_0 в HIEW и переходим на 0x4180000. Т.е. в консоли делаем hiew32 ROM_0, затем нажимаем F5 и вбиваем адрес начала раздела — 4180000:

Как вижно по 4180000 у нас находится сигнатура ANDROID!, что говорит нам о том, что мы на верном пути 😉 Адрес конца раздела вычисляется как linear_start_addr+partition_size-1 = 0x517FFFF в нашем случае. Нажимаем в HIEW * (звездочку на доп. клавиатуре) для начала выделения блока (если подвигать стрелками вверх / вниз / вправо / влево, то мы видим как блок начинает выделяться цветом) и либо спускаемся до 0x517FFFF, либо делаем это через F5:

И заканчиваем выделение блока, опять же через «серую» * (на доп. клавиатуре). После этого нажимаем F2 — Put block (сохранение блока в файл):

И раздел recovery у нас записан. Точно также можно вырезать из ROM_0 любой другой раздел. Как вы понимаете MTK Droid Tool при этом нам вообще не нужен.

Для упрощения процедуры можно также написать скрипт / программу, которая будет делать это автоматически для всех разделов, но у меня честно говоря не хватает времени на это, да и не так часто возникает эта задача, так что HIEW’а мне вполне хватает для этих целей.

p.s. На этом пока все … пост получился как «черновой вариант», т.к. писался на скорую руку, возможно позже я его дополню, если будут какие-то непонятные моменты. И конечно же, как всегда, буду раз вашим комментариям и вопросам …

p.p.s. Как меня успели немного поправить, в /proc/dumchar_info содержатся не linear_start_addr из scatter’а, а physical_start_addr. Т.е. в приведенном примере для раздела с recovery мы имеем:

linear_start_addr: 0x4180000
physical_start_addr: 0x2D80000
partition_size: 0x1000000

И в /proc/dumchar_info мы в графе StartAddr мы видим именно physical_start_addr. Но если мы взглянем на размер первого раздела (preloader), то становится понятно как перевести physical_start_addr в linear_start_addr, если к 0x2D80000 добавить 0x1400000 (это как раз размер preloader’а), то как раз получается 0x4180000.

Публикации по теме