Как да направите резервно копие на устройство с 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 MB/s, а за cmd.exe - максимум 400 kB/s);
  • инсталиран ADB;
  • Уверете се, че adb.exe е във вашата променлива PATH. Вижте и или използвайте Path Manager;
  • Активиран USB режим за отстраняване на грешки на устройството и съответните драйвери, инсталирани в Windows. Въвеждането на „adb devices“ в терминала трябва да покаже вашето устройство.

Прегради в устройството

Сега трябва да идентифицирате дяловете и блоковете на вашето устройство, на които искате да направите копие. За да копирате един дял, можете да използвате командите tar или dd, докато за да копирате цялата памет, трябва да използвате само dd.

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

Пример за това какво трябва да се появи в отговор на тяхното въвеждане в терминала.

127|root@android:/ # монтиране
монтиране
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
няма /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
няма /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
няма /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
няма /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/дялове
cat proc/дялове
големи второстепенни #блокове име

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 с GPT поддръжка, за да видите информация за всички дялове.

Цялата памет на телефона -> /dev/block/mmcblk0 (въпреки че на някои телефони това може да е и sdcard).
Partitions -> всичко зависи от конкретното устройство. Обикновено /dev/block/platform/dw_mmc/by-name/ изброява всички дялове за дадено устройство.

Архивирайте цялата памет (чрез adb)

Свържете телефона си с активиран USB режим за отстраняване на грешки към вашия компютър.

Относно Teclast x98 3gи случаят, когато устройството не се стартира (bootloop). Много е важно USB режимът за отстраняване на грешки да е активиран, преди всичко това да се случи. Изключете напълно таблета, изключете всички кабели, дайте няколко секунди за „почивка“ и свържете кабела от компютъра към таблета, трябва да се появи такава голяма бяла батерия, която ще покаже, че процесът на зареждане е в ход, едва тогава , дори и в изключено състояние, можете да работите с устройството през терминала и adb.

Стартирайте Cygwin Terminal и въведете (заменете mmcblk0, ако е необходимо):

adb напред tcp:5555 tcp:5555
adb обвивка
су
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox dd if=/dev/block/mmcblk0

Ще видите мигащ курсор на следващия ред вляво. В момента устройството чака блокът да бъде прехвърлен по мрежата.

adb напред tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0,5 > mmcblk0.raw

Ще видите, че размерът на файла започва да се увеличава, докато целият блок, който сте избрали, бъде копиран. Сега имате пълно архивиране на устройството в необработен формат. Можете да видите цялото съдържание в копирания блок с помощта на gptfdisk, наличен за Windows, Linux и други ОС (официален уебсайт или). Можете да направите същото с помощта на ClockworkMod Recovery, но първоначално трябва да монтирате /system дяла, тъй като BusyBox, включен в ClockworkMod, няма netcat, така че трябва да използвате netcat от /system дяла на вашето устройство.

С помощта на определени инструменти в Linux можете да променяте и извличате необходимите секции от целия блок.

Можете да използвате ADB през WiFi, подобно на Wi-Fi ADB.

Архивирайте цялата памет (чрез WiFi)

Връзка към автора: Nandroid директно към компютър без sdcard.

Необходимо:

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

Добро правило е да копирате myfifo в /cache, а не в /data, тъй като можете случайно да презапишете важни данни, ако използвате необработени данни за възстановяване.

Стартирайте Cygwin Terminal и въведете:

adb обвивка
су
mkfifo /кеш/myfifo
ftpput -v -u потребител -p пропуск -P 40 COMPUTER_IP block.raw /cache/myfifo

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

adb обвивка
су
dd if=/dev/block/mmcblk0p12 of=/cache/myfifo

Някои бележки:

  • FIFO могат да се правят само на 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 модемът има най-много високо нивопредаване на данни.

Архивирайте един дял (сурово = точно битово копие на дяла)

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

Архивирайте един дял (tar = копират се само файлове и папки)

В този случай е необходим вече монтиран дял. (Описах по-горе как да намеря дялове на Teclast x98 3g.)
За да видите списък на всички монтирани дялове в Cygwin Terminal, въведете:

Сега трябва да знаете къде и какъв дял е монтиран, например фърмуерът е монтиран в /system, което по същество е ROM.
В този случай ще трябва да отворите три Cygwin терминала, поради ограничения, наложени от самия Android:

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

adb напред tcp:5555 tcp:5555
adb обвивка
су
/system/xbin/busybox mkfifo /cache/myfifo
/system/xbin/busybox tar -cvf /cache/myfifo /system

Трябва да направите това, защото пренасочването на tar към stdout (с "-") не работи на Android и поврежда записания файл.

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

adb напред tcp:5555 tcp:5555
adb обвивка
су
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox cat /cache/myfifo

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

adb напред 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 MB/s, а на cmd.exe - максимум 400 kB/s);
  • инсталиран ADB;
  • Уверете се, че adb.exe е във вашата променлива PATH. Вижте и или използвайте Path Manager;
  • Активиран USB режим за отстраняване на грешки на устройството и съответните драйвери, инсталирани в Windows. Въвеждането на „adb devices“ в терминала трябва да покаже вашето устройство.

Прегради в устройството

Сега трябва да идентифицирате дяловете и блоковете на вашето устройство, на които искате да направите копие. За да копирате един дял, можете да използвате командите tar или dd, докато за да копирате цялата памет, трябва да използвате само dd.

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

Пример за това какво трябва да се появи в отговор на тяхното въвеждане в терминала.

127|root@android:/ # монтиране
монтиране
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
няма /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
няма /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
няма /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
няма /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/дялове
cat proc/дялове
големи второстепенни #блокове име

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 с GPT поддръжка, за да видите информация за всички дялове.

Цялата памет на телефона -> /dev/block/mmcblk0 (въпреки че на някои телефони това може да е и sdcard).
Partitions -> всичко зависи от конкретното устройство. Обикновено /dev/block/platform/dw_mmc/by-name/ изброява всички дялове за дадено устройство.

Архивирайте цялата памет (чрез adb)

Свържете телефона си с активиран USB режим за отстраняване на грешки към вашия компютър.

Относно Teclast x98 3gи случаят, когато устройството не се стартира (bootloop). Много е важно USB режимът за отстраняване на грешки да е активиран, преди всичко това да се случи. Изключете напълно таблета, изключете всички кабели, дайте няколко секунди за „почивка“ и свържете кабела от компютъра към таблета, трябва да се появи такава голяма бяла батерия, която ще покаже, че процесът на зареждане е в ход, едва тогава , дори и в изключено състояние, можете да работите с устройството през терминала и adb.

Стартирайте Cygwin Terminal и въведете (заменете mmcblk0, ако е необходимо):

adb напред tcp:5555 tcp:5555
adb обвивка
су
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox dd if=/dev/block/mmcblk0

Ще видите мигащ курсор на следващия ред вляво. В момента устройството чака блокът да бъде прехвърлен по мрежата.

adb напред tcp:5555 tcp:5555
cd /path/to/store/the/backup
nc 127.0.0.1 5555 | pv -i 0,5 > mmcblk0.raw

Ще видите, че размерът на файла започва да се увеличава, докато целият блок, който сте избрали, бъде копиран. Сега имате пълно архивиране на устройството в необработен формат. Можете да видите цялото съдържание в копирания блок с помощта на gptfdisk, наличен за Windows, Linux и други ОС (официален уебсайт или). Можете да направите същото с помощта на ClockworkMod Recovery, но първоначално трябва да монтирате /system дяла, тъй като BusyBox, включен в ClockworkMod, няма netcat, така че трябва да използвате netcat от /system дяла на вашето устройство.

С помощта на определени инструменти в Linux можете да променяте и извличате необходимите секции от целия блок.

Можете да използвате ADB през WiFi, подобно на Wi-Fi ADB.

Архивирайте цялата памет (чрез WiFi)

Връзка към автора: Nandroid директно към компютър без sdcard.

Необходимо:

  • Инсталиран FTP сървър на компютър или друго устройство;
  • Потребител с парола;
  • Зададеният порт за FTP сървъра е 21 по подразбиране, но в този пример се използва 40;
  • Домашна директория на потребителя с права за запис.

Добро правило е да копирате myfifo в /cache, а не в /data, тъй като можете случайно да презапишете важни данни, ако използвате необработени данни за възстановяване.

Стартирайте Cygwin Terminal и въведете:

adb обвивка
су
mkfifo /кеш/myfifo
ftpput -v -u потребител -p пропуск -P 40 COMPUTER_IP block.raw /cache/myfifo

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

adb обвивка
су
dd if=/dev/block/mmcblk0p12 of=/cache/myfifo

Някои бележки:

  • FIFO могат да се правят само на 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 модемът има най-висока скорост на трансфер на данни.

Архивирайте един дял (сурово = точно битово копие на дяла)

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

Архивирайте един дял (tar = копират се само файлове и папки)

В този случай е необходим вече монтиран дял. (Описах по-горе как да намеря дялове на Teclast x98 3g.)
За да видите списък на всички монтирани дялове в Cygwin Terminal, въведете:

Сега трябва да знаете къде и какъв дял е монтиран, например фърмуерът е монтиран в /system, което по същество е ROM.
В този случай ще трябва да отворите три Cygwin терминала, поради ограничения, наложени от самия Android:

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

adb напред tcp:5555 tcp:5555
adb обвивка
су
/system/xbin/busybox mkfifo /cache/myfifo
/system/xbin/busybox tar -cvf /cache/myfifo /system

Трябва да направите това, защото пренасочването на tar към stdout (с "-") не работи на Android и поврежда записания файл.

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

adb напред tcp:5555 tcp:5555
adb обвивка
су
/system/xbin/busybox nc -l -p 5555 -e /system/xbin/busybox cat /cache/myfifo

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

adb напред 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
  • Запазване на данни
  • Превод
Добави тагове

След като сме изтеглили всичко необходимо, можем например да създадем папка Android в корена на някоя папка и да организираме разопакованото съдържание на архивите в папки, т.е. драйвери в папката Drivers, Платформени инструменти в отделна папка, SP Flash Toolв отделна, MTK Droid Tools също в отделна.

След това активирайте режима за разработчици на вашето устройство и активирайте USB отстраняване на грешки. Тези. Първо отидете на Настройки -> Всичко за телефона (Относно устройството) и щракнете няколко пъти (5-7) върху „Номер на компилация“, докато се появи съобщение, че режимът за разработчици е активиран. След това отидете в менюто Настройки -> За разработчици и поставете отметка в квадратчето за „USB отстраняване на грешки“:

След това свържете устройството към компютъра и инсталирайте ADB драйверите (т.е. или като стартирате AdbDriverInstaller.exe от архива, или като отворите диспечера на устройствата и ръчно посочите пътя до драйверите в папка Android ADB драйвер x64 за неизвестно устройство). Резултатът трябва да изглежда така (Диспечер на устройства):

устройство Android ADBИнтерфейсът в Device Manager потвърждава, че сме готови за следващата стъпка.

Изчакваме, докато устройството бъде открито в него и щракнете върху бутона „Блокиране на карта“:

След това щракнете върху бутона „Създаване на scatter файл“ и запазете получения файл (за мен той се наричаше MT6582_Android_scatter.txt) на диск. На този етап подготвителният етап е завършен и можете да продължите директно към четенето на данните.

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

И запомнете какво пише в колоната linear_start_addr, в този случай това е 0x3E900000.

Изключваме телефона от компютъра и го изключваме, т.е. задръжте бутона за изключване и изберете „Изключване“ в менюто, можете също да изключите и поставите батерията. След това стартирайте SP Flash Tool и отидете на раздела Readback. След това щракнете върху бутона Добавяне. В резултат на това в таблицата ще се появи един ред:

Щракваме върху него, искаме да изберем място за запазване на файла ROM_0, избираме папката, в която искаме да го запазим и на следващия екран в полето Дължина въвеждаме номера, който запомнихме по-рано (linear_start_addr):

Крайният резултат трябва да бъде нещо подобно:

След това свързваме изключения телефон (!) към компютъра. В този момент е препоръчително да отворите диспечера на устройствата. Засега не натискаме никакви бутони в SP Flash Tool на този екран!

В момента на свързване ще бъде открито неизвестно устройство MT65xx PreLoader и операционната система ще ви подкани да инсталирате драйвери за него. Картината по-долу ясно показва това. По-добре е да отворите диспечера на устройствата непосредствено преди да свържете телефона, за да „хванете“ момента, в който се появи MT65xx PreLoader. Ако устройството се появи, но операционната система не предлага автоматично инсталиране на драйвери, тогава това трябва да се направи ръчно, като щракнете с десния бутон върху устройството MT65xx PreLoader.

Изберете „Търсене на драйвери на този компютър“ и посочете папката, в която се намира разопакованото съдържание на архива mtk_xp_vista_7_8_x32_x64.zip (т.е. до този момент трябва да разопаковате архива някъде). След като драйверите са инсталирани успешно, картината в диспечера на устройствата трябва да се промени на това:

Ако драйверите са инсталирани, можете да продължите към следващата стъпка. Моля, обърнете внимание, че когато свържете телефона, Preloader USB VCOM портът може да се появи само за няколко секунди - това е нормално, нашата задача на този етап е да инсталираме драйверите на телефона, така че да бъде открит точно като Preloader USB VCOM порт, а не неизвестното устройство MT65xx PreLoader. Ако изведнъж не сте имали време да инсталирате драйверите и телефонът се включи, извадете батерията, изключете телефона, поставете батерията, свържете телефона и повторете процедурата.

След като сме сигурни, че драйверите са инсталирани, изключваме телефона от компютъра. Изключваме го, в отворения SP Flash Tool натискаме бутона Readback и свързваме изключения телефон към компютъра. След това ще преминем през процеса на четене на фърмуера от телефона:

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

Изчакваме процеса да приключи. Създаването на резервно копие може да отнеме 10-15 минути. Просто погледнете текущите проценти и не пипайте нищо 😉 В края на процедурата за четене ще видите съобщението Readback OK:

Докато правим Backup, е време да обясним какво е scatter файл и какво е ROM_0 файл, който ще получим като изход. Паметта на телефона е обикновен EMMC Flash, който е разделен на специфични секции. Scatter файлът е файл с описание на секции (например Scatter има секции PRELOADER, RECOVERY, LOGO, ANDROID и др.). Предназначението на дяловете е различно, например Recovery съдържа изображението за възстановяване, логото съдържа логото, използвано при зареждане на системата, Android съдържа системното изображение и т.н. Файлът ROM_0, който получаваме като изход, е по същество непрекъснат дъмп на EMMC Flash в един файл. Но за да използваме полученото архивиране на фърмуера, например, за възстановяване на друго подобно устройство, все пак ще трябва да го разделим на дялове. Тук ще опиша няколко начина за това. Първият и най-често срещан е чрез MTK Droid Tools. Да кажем, че вече имаме ROM_0 файл, направен с помощта на SP Flash Tool.

Включете захранването на устройството (телефона) и го оставете да стартира, след което стартираме отново MTK Droid Tools (разбира се, режимът за отстраняване на грешки в USB на телефона трябва да е включен и ADB драйверите да са инсталирани на компютъра), отидете на раздела корен, архивиране, възстановяване и щракнете върху бутона „Създаване на резервно копие от ROM_ флаш устройство“:

Избираме ROM_0, който получихме в предишната стъпка, и в прозореца на регистрационния файл виждаме нещо като следното:

— Запазете папката на компютъра: E:\Android\MtkDroidTools\backups\KINGSING_S1_141117_ForFlashtoolFromReadBack_150512-005322\
— scatter се записва във файла:
E:\Work\Megaphone Login Plus\MtkDroidTools\backups\KINGSING_S1_141117_ForFlashtoolFromReadBack_150512-005322\MT6582_Android_scatter.txtcopying completed
- preloader.bin ... копиран ... изрязан OK
- MBR...копиран
- EBR1...копиран
- pro_info ...копирано
- nvram.bin...копиран
- protect_f ...копирано
— protect_s ...копирано
-seccfg...копирано
- uboot.bin...копиран
- boot.img ...копиран

Е и т.н. Сега в папката за запазване, за мен това е E:\Android\MtkDroidTools\backups\ имаме папка с пълно архивиране на нашия фърмуер, разделена на секции (т.е. всяка секция в отделен файл):

Това завършва процеса на създаване на резервен фърмуер. Ако просто искате да разберете как да направите резервен фърмуер с помощта на 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, тогава същата команда може да бъде дадена в самия телефон чрез инсталиране на терминален емулатор за Android от Google Play:

Както можете да видите, резултатът е абсолютно същият и linear_start_address на кеш секцията може да бъде взет от тук. Да, между другото, в нови устройства, например базирани на MTK 6752, като Beeline Pro, ZTE Q Lux и др. Картата на дяловете може да бъде получена с помощта на cat /proc/partinfo. MTK Droid Tools изобщо не работи с тези устройства.

Вече имаме метод за получаване на началния адрес на кеш секцията, който е необходим за получаване на ROM_0 с помощта на SP Flash Tool. Ние също знаем адресите (отмествания) и размерите на всеки дял. Тези. За да „нарежем“ ROM_0 на дялове, не е необходимо да използваме MTK Droid Tools. Това може да се направи ръчно във всеки шестнадесетичен редактор, който поддържа функцията за избиране и запазване на блок във файл (използвам конзолата HIEW). Е, като пример, нека „изрежем“ дяла за възстановяване от получения файл 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 - Поставете блок (запазване на блока във файл):

И раздел за възстановяванеимаме го записано. По същия начин можете да изрежете всеки друг дял от ROM_0. Както разбирате, ние изобщо не се нуждаем от MTK Droid Tool.

За да опростите процедурата, можете също да напишете скрипт/програма, която ще направи това автоматично за всички секции, но честно казано, нямам достатъчно време за това и тази задача не възниква много често, така че HIEW е доста достатъчно за тези цели.

p.s. Това е всичко за сега... публикацията се оказа "чернова версия", защото... Написах го набързо, може би ще го добавя по-късно, ако има неясни моменти. И разбира се, както винаги, ще отговоря на вашите коментари и въпроси...

п.п.с. Както успяха малко да ме коригират, /proc/dumchar_info не съдържа linear_start_addr от scatter, а physical_start_addr. Тези. в дадения пример за дяла за възстановяване имаме:

линеен_начален_адрес: 0x4180000
физически_начален_адрес: 0x2D80000
partition_size: 0x1000000

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

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