Cómo hacer una copia de seguridad de un dispositivo Android antes de actualizar el firmware. Cómo hacer una copia de seguridad de un dispositivo Android antes de actualizar el firmware. La copia de seguridad de una estructura de rom desconocida es imposible

Hola Habrakhabr.

información general

Esta guía está diseñada para ayudarlo a crear una copia de seguridad completa de su dispositivo (memoria completa con todas las particiones) o una sola partición (incluidas las tarjetas SD, etc.) directamente en su computadora:
  • A nivel de Bloque de Memoria (usando el comando dd): para secciones individuales o para toda la memoria (todas las secciones). Copia de respaldo siempre tendrá el mismo tamaño que la partición que se está guardando.
  • A nivel de Archivo (usando el comando tar): solo para particiones individuales. La copia sólo contendrá archivos y carpetas que existan en el dispositivo, por lo que ocupará mucho menos espacio, dependiendo de qué tan llena esté la partición.

Estas instrucciones son aplicables cuando el dispositivo está encendido o está en ClockworkMod Recovery (en estos casos, ADB funcionará en modo Fastboot esta instrucción no aplica). A menos que se indique lo contrario, todos los comandos están pensados ​​para su uso en Windows. Lo mismo se aplica a Linux y Unix.

Requisitos

  • Arraigado dispositivo Android;
  • Busybox instalado en el dispositivo;
  • Si estás usando Linux/OS X, ya tienes herramientas necesarias, para Windows, descargue Cygwin e instale netcat, pv y util-linux con él, seleccionándolos durante la instalación (agregaré que es mejor usar el terminal de Cygwin mintty.exe que el cmd.exe nativo de Windows, ya que la copia la velocidad para el primero alcanzó 3-4 MB/s, y para cmd.exe - un máximo de 400 kB/s);
  • BAD instalado;
  • Asegúrese de que adb.exe esté en su variable PATH. Mire y use Path Manager;
  • Modo de depuración USB habilitado en el dispositivo y los controladores correspondientes instalados en Windows. Al escribir "adb devices" en la terminal se debería mostrar su dispositivo.

Particiones en el dispositivo.

Ahora necesita identificar las particiones y bloques de su dispositivo de los que desea hacer una copia. Para copiar una sola partición, puede usar los comandos tar o dd, mientras que para copiar toda la memoria, solo necesita usar dd.

En Teclast x98 3g Para definir particiones, se utilizan dos comandos: cat proc/partitions y mount.

Un ejemplo de lo que debería aparecer en respuesta a su entrada en la terminal.

127|root@android:/ # montar
montar
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,modo=755 0 0
devpts /dev/pts devpts rw,relatime,modo=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
ninguno /cuenta cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/secure tmpfs rw,relatime,modo=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,modo=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,modo=755,gid=1000 0 0
ninguno /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
ninguno /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
ninguno /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
tmpfs /mnt/libreg tmpfs rw,noexec,noatime,tamaño=4k,modo=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/particiones
gato proc/particiones
nombre de #bloques mayor menor

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

Normalmente en Android, el bloque completo que contiene todas las particiones se encuentra en /dev/block/mmcblk0, y todas las demás particiones son subsecciones del mismo. Puede instalar parted con soporte GPT para ver información sobre todas las particiones.

Toda la memoria del teléfono -> /dev/block/mmcblk0 (aunque en algunos teléfonos también puede ser una tarjeta SD).
Particiones -> todo depende del dispositivo específico. Normalmente /dev/block/platform/dw_mmc/by-name/ enumera todas las particiones para un dispositivo determinado.

Copia de seguridad de toda la memoria (a través de adb)

Conecte su teléfono con el modo de depuración USB habilitado a su computadora.

Sobre Teclast x98 3g y el caso en el que el dispositivo no arranca (bootloop). Es muy importante que el modo de depuración USB esté habilitado antes de que todo esto suceda. Apague la tableta por completo, desconecte todos los cables, dé un par de segundos para que “descanse” y conecte el cable de la computadora a la tableta, debería aparecer una batería blanca tan grande que indicará que el proceso de carga está en progreso, solo entonces , incluso en estado apagado, puede trabajar con el dispositivo a través del terminal y adb.

Inicie Cygwin Terminal e ingrese (reemplace mmcblk0 si es necesario):

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

Verá un cursor parpadeante en la siguiente línea a la izquierda. Por el momento, el dispositivo está esperando que el Bloque se transmita a través de la red.

adb reenviar tcp:5555 tcp:5555
cd /ruta/al/almacenamiento/la/copia de seguridad
nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw

Verá que el tamaño del archivo comienza a aumentar hasta que se copie todo el bloque que seleccionó. Ahora tienes una copia de seguridad completa del dispositivo en formato sin formato. Puede ver todo el contenido del bloque copiado usando gptfdisk, disponible para Windows, Linux y otros sistemas operativos (sitio web oficial o). Puedes hacer lo mismo usando ClockworkMod Recovery, pero inicialmente necesitas montar la partición /system, ya que BusyBox, incluido en ClockworkMod, no tiene netcat, por lo que necesitas usar netcat desde la partición /system de tu dispositivo.

Con la ayuda de ciertas herramientas en Linux, puede modificar y extraer las Secciones requeridas de todo el Bloque.

Puede utilizar ADB a través de WiFi, similar a Wi-Fi ADB.

Copia de seguridad de toda la memoria (a través de WiFi)

Enlace al autor: Nandroid directamente a la computadora sin tarjeta SD.

Necesario:

  • Servidor FTP instalado en una computadora u otro dispositivo;
  • Usuario con contraseña;
  • Puerto instalado para Servidores FTP, el valor predeterminado es 21, pero en en este ejemplo usado 40;
  • Directorio de inicio del usuario con derechos de escritura.

Una buena regla general es copiar myfifo a /cache y no a /data, ya que puedes sobrescribir accidentalmente datos importantes si utilizas datos sin procesar para la recuperación.

Inicie Cygwin Terminal e ingrese:

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

Abra otra Terminal Cygwin y escriba:

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

Algunas notas:

  • Los FIFO sólo se pueden crear en sistemas de archivos nativos de Linux; FAT no es adecuado para esto;
  • El proceso de lectura de una Partición desde un dispositivo no la modifica de ninguna manera.

Copia de seguridad de toda la memoria (mediante conexión USB o conexión Wi-Fi)

Para ello, debes desconectar todas las conexiones de red del ordenador, excepto aquella con la que realizarás el proceso de copia.
Tan pronto como conecte su computadora a su dispositivo Android, podrá ver la IP de la computadora y la IP del dispositivo en las "Propiedades de conexión". IP: será la IP de la computadora y Gateway contendrá la IP del dispositivo Android.
  • Módem Wi-Fi: Computadora< - Wi-Fi --->dispositivo Android< - 3G --->Internet
  • Módem USB:
    Computadora< - USB --->dispositivo Android< - Wi-Fi --->Internet
    Computadora< - USB --->dispositivo Android< - 3G --->Internet

El proceso es absolutamente similar a la transferencia de datos a través de Wi-Fi, lo único es que la velocidad de transferencia de datos será mucho mayor porque la computadora y el dispositivo Android están conectados directamente, en lugar de usar el enrutador como puerta de enlace. En este caso, la puerta de enlace será el propio dispositivo Android. El módem USB tiene más nivel alto transmisión de datos.

Copia de seguridad de una partición (sin formato = copia exacta bit a bit de la partición)

Todo es similar a lo descrito anteriormente, solo necesita reemplazar mmcblk0 con la Sección apropiada. En este caso particular, puede utilizar un software para ver el contenido de la Sección copiada. Dependiendo de sistema de archivos: DiskInternals Linux Reader, complemento para Total Commander y ImDisk Virtual Disk Driver. También puede utilizar software para recuperar datos de particiones individuales, por ejemplo, Recuva junto con VHD Tool o herramientas línea de comando, incluidos en los propios sistemas operativos.

Copia de seguridad de una partición (tar = solo se copian archivos y carpetas)

En este caso, se requiere una partición ya montada. (Describí anteriormente cómo encontrar particiones en Teclast x98 3g).
Para ver una lista de todas las particiones montadas en Cygwin Terminal, ingrese:

Ahora deberías saber dónde y qué partición está montada; por ejemplo, el firmware está montado en /system, que es esencialmente una ROM.
En este caso, tendrás que abrir tres Terminales Cygwin, debido a restricciones impuestas por el propio Android:

Abra la primera Terminal Cygwin y cree un FIFO, por ejemplo en /cach, y redirija tar a él:

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

Tienes que hacer esto porque redirigir tar a la salida estándar (con "-") no funciona en Android y daña el archivo guardado.

Abra una segunda terminal Cygwin:

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

Abra una tercera terminal Cygwin:

adb reenviar tcp:5555 tcp:5555
cd /ruta/al/almacenamiento/la/copia de seguridad
nc 127.0.0.1 5555 | pv -i 0.5 > sistema.tar

Puede ver el archivo tar resultante usando Winrar, Comandante total, PeaZip, etc. Tenga en cuenta que no debe extraer archivos ni editarlos, ya que el formato tar conserva los datos de acceso y propietario de cada archivo, que desaparecen cuando se extraen en particiones FAT/NTFS.

Etiquetas: Agregar etiquetas

Hola Habrakhabr.

información general

Esta guía está diseñada para ayudarlo a crear una copia de seguridad completa de su dispositivo (memoria completa con todas las particiones) o una sola partición (incluidas las tarjetas SD, etc.) directamente en su computadora:
  • A nivel de Bloque de Memoria (usando el comando dd): para secciones individuales o para toda la memoria (todas las secciones). La copia de seguridad siempre tendrá el mismo tamaño que la partición que se está guardando.
  • A nivel de Archivo (usando el comando tar): solo para particiones individuales. La copia sólo contendrá archivos y carpetas que existan en el dispositivo, por lo que ocupará mucho menos espacio, dependiendo de qué tan llena esté la partición.

Esta instrucción es aplicable cuando el dispositivo está encendido o está en ClockworkMod Recovery (en estos casos, ADB funcionará; en modo Fastboot, esta instrucción no es aplicable). A menos que se indique lo contrario, todos los comandos están pensados ​​para su uso en Windows. Lo mismo se aplica a Linux y Unix.

Requisitos

  • Dispositivo Android rooteado;
  • Busybox instalado en el dispositivo;
  • Si estás usando Linux / OS X, ya tienes las herramientas necesarias, para Windows descarga Cygwin e instala con él netcat, pv y util-linux, seleccionándolos durante la instalación (agregaré que es mejor usar la terminal de Cygwin mintty.exe que el cmd.exe nativo de Windows, ya que la velocidad de copia del primero alcanzaba los 3-4 MB/s, y la del cmd.exe, un máximo de 400 kB/s);
  • BAD instalado;
  • Asegúrese de que adb.exe esté en su variable PATH. Mire y use Path Manager;
  • Modo de depuración USB habilitado en el dispositivo y los controladores correspondientes instalados en Windows. Al escribir "adb devices" en la terminal se debería mostrar su dispositivo.

Particiones en el dispositivo.

Ahora necesita identificar las particiones y bloques de su dispositivo de los que desea hacer una copia. Para copiar una sola partición, puede usar los comandos tar o dd, mientras que para copiar toda la memoria, solo necesita usar dd.

En Teclast x98 3g Para definir particiones, se utilizan dos comandos: cat proc/partitions y mount.

Un ejemplo de lo que debería aparecer en respuesta a su entrada en la terminal.

127|root@android:/ # montar
montar
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,modo=755 0 0
devpts /dev/pts devpts rw,relatime,modo=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
ninguno /cuenta cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/secure tmpfs rw,relatime,modo=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,modo=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,modo=755,gid=1000 0 0
ninguno /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
ninguno /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
ninguno /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
tmpfs /mnt/libreg tmpfs rw,noexec,noatime,tamaño=4k,modo=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/particiones
gato proc/particiones
nombre de #bloques mayor menor

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

Normalmente en Android, el bloque completo que contiene todas las particiones se encuentra en /dev/block/mmcblk0, y todas las demás particiones son subsecciones del mismo. Puede instalar parted con soporte GPT para ver información sobre todas las particiones.

Toda la memoria del teléfono -> /dev/block/mmcblk0 (aunque en algunos teléfonos también puede ser una tarjeta SD).
Particiones -> todo depende del dispositivo específico. Normalmente /dev/block/platform/dw_mmc/by-name/ enumera todas las particiones para un dispositivo determinado.

Copia de seguridad de toda la memoria (a través de adb)

Conecte su teléfono con el modo de depuración USB habilitado a su computadora.

Sobre Teclast x98 3g y el caso en el que el dispositivo no arranca (bootloop). Es muy importante que el modo de depuración USB esté habilitado antes de que todo esto suceda. Apague la tableta por completo, desconecte todos los cables, dé un par de segundos para que “descanse” y conecte el cable de la computadora a la tableta, debería aparecer una batería blanca tan grande que indicará que el proceso de carga está en progreso, solo entonces , incluso en estado apagado, puede trabajar con el dispositivo a través del terminal y adb.

Inicie Cygwin Terminal e ingrese (reemplace mmcblk0 si es necesario):

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

Verá un cursor parpadeante en la siguiente línea a la izquierda. Por el momento, el dispositivo está esperando que el Bloque se transmita a través de la red.

adb reenviar tcp:5555 tcp:5555
cd /ruta/al/almacenamiento/la/copia de seguridad
nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw

Verá que el tamaño del archivo comienza a aumentar hasta que se copie todo el bloque que seleccionó. Ahora tienes una copia de seguridad completa del dispositivo en formato sin formato. Puede ver todo el contenido del bloque copiado usando gptfdisk, disponible para Windows, Linux y otros sistemas operativos (sitio web oficial o). Puedes hacer lo mismo usando ClockworkMod Recovery, pero inicialmente necesitas montar la partición /system, ya que BusyBox, incluido en ClockworkMod, no tiene netcat, por lo que necesitas usar netcat desde la partición /system de tu dispositivo.

Con la ayuda de ciertas herramientas en Linux, puede modificar y extraer las Secciones requeridas de todo el Bloque.

Puede utilizar ADB a través de WiFi, similar a Wi-Fi ADB.

Copia de seguridad de toda la memoria (a través de WiFi)

Enlace al autor: Nandroid directamente a la computadora sin tarjeta SD.

Necesario:

  • Servidor FTP instalado en una computadora u otro dispositivo;
  • Usuario con contraseña;
  • El puerto configurado para el servidor FTP es 21 de forma predeterminada, pero en este ejemplo se utiliza 40;
  • Directorio de inicio del usuario con derechos de escritura.

Una buena regla general es copiar myfifo a /cache y no a /data, ya que puedes sobrescribir accidentalmente datos importantes si utilizas datos sin procesar para la recuperación.

Inicie Cygwin Terminal e ingrese:

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

Abra otra Terminal Cygwin y escriba:

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

Algunas notas:

  • Los FIFO sólo se pueden crear en sistemas de archivos nativos de Linux; FAT no es adecuado para esto;
  • El proceso de lectura de una Partición desde un dispositivo no la modifica de ninguna manera.

Copia de seguridad de toda la memoria (mediante conexión USB o conexión Wi-Fi)

Para ello, debes desconectar todas las conexiones de red del ordenador, excepto aquella con la que realizarás el proceso de copia.
Tan pronto como conecte su computadora a su dispositivo Android, podrá ver la IP de la computadora y la IP del dispositivo en las "Propiedades de conexión". IP: será la IP de la computadora y Gateway contendrá la IP del dispositivo Android.
  • Módem Wi-Fi: Computadora< - Wi-Fi --->dispositivo Android< - 3G --->Internet
  • Módem USB:
    Computadora< - USB --->dispositivo Android< - Wi-Fi --->Internet
    Computadora< - USB --->dispositivo Android< - 3G --->Internet

El proceso es absolutamente similar a la transferencia de datos a través de Wi-Fi, lo único es que la velocidad de transferencia de datos será mucho mayor porque la computadora y el dispositivo Android están conectados directamente, en lugar de usar el enrutador como puerta de enlace. En este caso, la puerta de enlace será el propio dispositivo Android. Un módem USB tiene la tasa de transferencia de datos más alta.

Copia de seguridad de una partición (sin formato = copia exacta bit a bit de la partición)

Todo es similar a lo descrito anteriormente, solo necesita reemplazar mmcblk0 con la Sección apropiada. En este caso particular, puede utilizar un software para ver el contenido de la Sección copiada. Dependiendo del sistema de archivos: DiskInternals Linux Reader, complemento para Total Commander y ImDisk Virtual Disk Driver. También puede utilizar software para recuperar datos de particiones individuales, como Recuva junto con la herramienta VHD o las herramientas de línea de comandos incluidas con los propios sistemas operativos.

Copia de seguridad de una partición (tar = solo se copian archivos y carpetas)

En este caso, se requiere una partición ya montada. (Describí anteriormente cómo encontrar particiones en Teclast x98 3g).
Para ver una lista de todas las particiones montadas en Cygwin Terminal, ingrese:

Ahora deberías saber dónde y qué partición está montada; por ejemplo, el firmware está montado en /system, que es esencialmente una ROM.
En este caso, tendrás que abrir tres Terminales Cygwin, debido a restricciones impuestas por el propio Android:

Abra la primera Terminal Cygwin y cree un FIFO, por ejemplo en /cach, y redirija tar a él:

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

Tienes que hacer esto porque redirigir tar a la salida estándar (con "-") no funciona en Android y daña el archivo guardado.

Abra una segunda terminal Cygwin:

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

Abra una tercera terminal Cygwin:

adb reenviar tcp:5555 tcp:5555
cd /ruta/al/almacenamiento/la/copia de seguridad
nc 127.0.0.1 5555 | pv -i 0.5 > sistema.tar

Puede ver el archivo tar resultante usando Winrar, Total Commander, PeaZip, etc. Tenga en cuenta que no debe extraer archivos ni editarlos, ya que el formato tar conserva los datos de acceso y propietario de cada archivo, que desaparecen cuando se extraen en particiones FAT/NTFS.

Etiquetas:

  • Androide
  • copia de seguridad nandroid
  • Guardar datos
  • Traducción
Agregar etiquetas

Una vez que hayamos descargado todo lo que necesitamos, podemos, por ejemplo, crear una carpeta de Android en la raíz de alguna carpeta y organizar el contenido descomprimido de los archivos en carpetas, es decir. controladores en la carpeta Controladores, Herramientas de plataforma en carpeta separada, SP Herramienta Flash en uno aparte, MTK Droid Tools también en otro aparte.

A continuación, habilite el Modo desarrollador en su dispositivo y active la depuración USB. Aquellos. Primero, vaya a Configuración -> Acerca del teléfono (Acerca del dispositivo) y haga clic varias veces (5-7) en el "Número de compilación" hasta que aparezca un mensaje que indique que el Modo de desarrollador está activado. A continuación, vaya al menú Configuración -> Para desarrolladores y marque la casilla "Depuración USB":

Después de eso, conecte el dispositivo a la PC e instale los controladores ADB (es decir, ejecutando AdbDriverInstaller.exe desde el archivo o abriendo el administrador de dispositivos y especificando manualmente la ruta a los controladores en carpeta de Android Controlador ADB x64 para dispositivo desconocido). El resultado debería verse así (Administrador de dispositivos):

Dispositivo BAD de Android La interfaz en el Administrador de dispositivos confirma que estamos listos para el siguiente paso.

Esperamos hasta que se detecte el dispositivo en él y hacemos clic en el botón "Bloquear mapa":

Luego haga clic en el botón "Crear archivo de dispersión" y guarde el archivo resultante (para mí se llamaba MT6582_Android_scatter.txt) en el disco. En este punto, la etapa de preparación finaliza y puede proceder directamente a leer los datos.

Abra el archivo resultante en Notepad++ o Word (tenga en cuenta que el bloc de notas normal no funcionará) y busque la línea nombre_partición: CACHE en él:

Y recuerda lo que está escrito en la columna linear_start_addr, en este caso es 0x3E900000.

Desconectamos el teléfono del PC y lo apagamos, es decir. Mantenga presionado el botón de apagado y seleccione "Apagar" en el menú, también puede desconectar e insertar la batería. A continuación, inicie SP Flash Tool y vaya a la pestaña Lectura. A continuación, haga clic en el botón Agregar. Como resultado, aparecerá una fila en la tabla:

Hacemos clic en él, se nos pide que seleccionemos una ubicación para guardar el archivo ROM_0, seleccionamos la carpeta en la que queremos guardarlo y en la siguiente pantalla en el campo Longitud ingresamos el número que recordamos anteriormente (linear_start_addr):

El resultado final debería ser algo como esto:

Luego conectamos el teléfono apagado (!) a la PC. En este punto es recomendable abrir el administrador de dispositivos. ¡Por ahora, no presionamos ningún botón en SP Flash Tool en esta pantalla!

En el momento de la conexión, se detectará un dispositivo PreLoader MT65xx desconocido y el sistema operativo le pedirá que instale los controladores para él. La siguiente imagen muestra claramente esto. Es mejor abrir el administrador de dispositivos inmediatamente antes de conectar el teléfono para "captar" el momento en que aparece el precargador MT65xx. Si aparece el dispositivo y el sistema operativo no ofrece la instalación automática de controladores, esto debe hacerse manualmente haciendo clic derecho en el dispositivo MT65xx PreLoader.

Seleccione "Buscar controladores en esta computadora" e indique la carpeta en la que se encuentra el contenido descomprimido del archivo mtk_xp_vista_7_8_x32_x64.zip (es decir, en este punto debe descomprimir el archivo en algún lugar). Una vez que los controladores se hayan instalado correctamente, la imagen en el administrador de dispositivos debería cambiar a esta:

Si los controladores están instalados, puede continuar con el siguiente paso. Tenga en cuenta que cuando conecta el teléfono, el puerto VCOM USB del precargador puede aparecer solo durante unos segundos; esto es normal, nuestra tarea en esta etapa es instalar los controladores del teléfono para que se detecte exactamente como el puerto VCOM USB del precargador. y no el desconocido dispositivo MT65xx PreLoader. Si de repente no tuvo tiempo de instalar los controladores y el teléfono se encendió, saque la batería, desconecte el teléfono, inserte la batería, conecte el teléfono y repita el procedimiento.

Una vez estemos seguros de que los drivers están instalados desconectamos el teléfono del PC. Lo apagamos, en la SP Flash Tool abierta presionamos el botón Readback y conectamos el teléfono apagado a la PC. Después de esto, pasaremos por el proceso de lectura del firmware del teléfono:

Mucha gente escribe sobre las dificultades que surgen precisamente en este paso. Intentaré explicarlo con un poco más de detalle. Después de presionar el botón Leer, SP Flash Tool entra en modo de espera para que el teléfono se conecte, es decir. Se supone que antes de esto logró captar el momento en que su teléfono apagado se identifica como MT65xx PreLoader e instaló controladores para que el puerto VCOM USB del precargador aparezca en los puertos COM. Si de repente, por alguna razón, SP Flash Tool escribió un error o el teléfono no tuvo tiempo de conectarse, el siguiente método puede ayudar (todo lo descrito solo es cierto si instaló los controladores correctamente y cuando conecta el teléfono, Precargador USB VCOM Aparece el puerto): desconecte el teléfono de la PC, retire la batería, presione el botón Leer, conecte el teléfono sin la batería. En SP Flash Tool habrá una barra roja (Descargar), durante este tiempo insertamos rápidamente la batería nuevamente, si tenemos tiempo, aparecerá una barra azul de Lectura con porcentajes, como en la imagen:

Estamos esperando que se complete el proceso. Crear una copia de seguridad puede tardar entre 10 y 15 minutos. Solo mire los porcentajes actuales y no toque nada 😉 Al final del procedimiento de lectura, verá el mensaje Readback Ok:

Mientras hacemos Backup, es momento de explicar qué es un archivo scatter y qué es el archivo ROM_0, que recibiremos como salida. La memoria del teléfono es una EMMC Flash normal, que está dividida en secciones específicas. Un archivo Scatter es un archivo de descripción de sección (por ejemplo, Scatter tiene secciones PRELOADER, RECOVERY, LOGO, ANDROID, etc.). El propósito de las particiones es diferente, por ejemplo, Recovery contiene la imagen de recuperación, logo contiene el logo usado al cargar el sistema, Android contiene la imagen del sistema, etc. El archivo ROM_0 que obtenemos como resultado es esencialmente un volcado continuo de EMMC Flash en un solo archivo. Pero para utilizar la copia de seguridad del firmware resultante, por ejemplo, para restaurar otro dispositivo similar, aún necesitaremos dividirlo en particiones. Aquí describiré varias formas de hacer esto. La primera y más común es a través de MTK Droid Tools. Digamos que ya tenemos un archivo ROM_0 creado con SP Flash Tool.

Encienda el dispositivo (teléfono) y déjelo arrancar, después de lo cual ejecutamos MTK Droid Tools nuevamente (el modo de depuración USB en el teléfono, por supuesto, debe estar activado y los controladores ADB instalados en la PC), vaya a la pestaña raíz, copia de seguridad, recuperación y haga clic en el botón "Crear copia de seguridad desde la unidad flash ROM_":

Seleccionamos la ROM_0 que obtuvimos en el paso anterior y en la ventana de registro vemos algo como lo siguiente:

— Guardar carpeta en la computadora: E:\Android\MtkDroidTools\backups\KINGSING_S1_141117_ForFlashtoolFromReadBack_150512-005322\
— la dispersión se guarda en el archivo:
E:\Work\Megaphone Login Plus\MtkDroidTools\backups\KINGSING_S1_141117_ForFlashtoolFromReadBack_150512-005322\MT6582_Android_scatter.txtcopia completada
- preloader.bin... copiado... cortar Aceptar
-MBR...copiado
- EBR1...copiado
- pro_info ... copiado
- nvram.bin...copiado
-protect_f...copiado
— proteger_s ... copiado
-seccfg...copiado
- uboot.bin...copiado
- boot.img ... copiado

Bueno, etc Ahora en la carpeta de guardar, para mí es E:\Android\MtkDroidTools\backups\ tenemos una carpeta con una copia de seguridad completa de nuestro firmware, dividida en secciones (es decir, cada sección en un archivo separado):

Esto completa el proceso de creación de firmware de respaldo. Si solo quería saber cómo hacer una copia de seguridad del firmware usando SP Flash Tool y lo logró, no necesita seguir leyendo.

Para avanzados

¿Qué hacer si MTK Droid Tools no “ve” el teléfono? ¿O es imposible crear un archivo disperso o dividir el archivo ROM_0 resultante en secciones? ¿Cómo obtener un mapa de partición? ¿Es posible "cortar" el archivo ROM_0 manualmente? Existe tal posibilidad. Para obtener un mapa de partición en MTK 65xx, debe dar un comando en la consola ADB, es decir, Ejecute adb shell en la consola y escriba este comando allí:

Si de repente el teléfono no es visible a través de ADB por algún motivo (en este caso, te aconsejo que leas el manual de ADB, puede haber un problema con el VEN_ID del dispositivo y solo necesitas registrarlo en %PERFIL DE USUARIO%\.android\adb_usb.ini, luego se puede dar el mismo comando en el teléfono instalando Terminal Emulator para Android desde Google Play:

Como puede ver, el resultado es exactamente el mismo y la dirección_inicio_lineal de la sección de caché se puede tomar desde aquí. Sí, por cierto, en dispositivos nuevos, por ejemplo basados ​​​​en MTK 6752, como Beeline Pro, ZTE Q Lux, etc. El mapa de partición se puede obtener usando cat /proc/partinfo. MTK Droid Tools no funciona en absoluto con estos dispositivos.

Ahora tenemos un método para obtener la dirección de inicio de la sección de caché, que es necesaria para obtener ROM_0 usando la herramienta SP Flash. También conocemos las direcciones (compensaciones) y tamaños de cada partición. Aquellos. Para "cortar" ROM_0 en particiones, no necesitamos usar MTK Droid Tools. Esto se puede hacer manualmente en cualquier editor hexadecimal que admita la función de seleccionar y guardar un bloque en un archivo (yo uso la consola HIEW). Bueno, como ejemplo, "eliminemos" la partición de recuperación del archivo ROM_0 resultante.

Sabemos (por scatter o por dumchar_info) su linear_start_addr: 0x4180000 y particion_size: 0x1000000. Abra ROM_0 en HIEW y vaya a 0x4180000. Aquellos. en la consola creamos hiew32 ROM_0, luego presionamos F5 e ingresamos la dirección del comienzo de la partición - 4180000:

Como puedes ver en 4180000 tenemos la firma ANDROID!, lo que nos dice que estamos en el camino correcto 😉 La dirección de fin de partición se calcula como linear_start_addr+partition_size-1 = 0x517FFFF en nuestro caso. Pulsamos en HIEW * (el asterisco del teclado adicional) para empezar a seleccionar el bloque (si movemos las flechas arriba/abajo/derecha/izquierda, vemos como el bloque empieza a resaltarse en color) y o bien bajamos hasta 0x517FFFF , o hazlo a través de F5:

Y terminamos de seleccionar el bloque, nuevamente usando el “gris” * (en el teclado adicional). Después de eso, presione F2 - Poner bloque (guardando el bloque en un archivo):

Y sección de recuperación lo tenemos grabado. De la misma forma, puedes cortar cualquier otra partición de ROM_0. Como comprenderá, no necesitamos MTK Droid Tool en absoluto.

Para simplificar el procedimiento, también puede escribir un script/programa que haga esto automáticamente para todas las secciones, pero para ser honesto, no tengo suficiente tiempo para esto y esta tarea no surge muy a menudo, por lo que HIEW es bastante suficiente para estos fines.

PD. Eso es todo por ahora... el post resultó ser una “versión borrador”, porque... Lo escribí apresuradamente, tal vez lo agregue más tarde si hay algún punto que no esté claro. Y por supuesto, como siempre, responderé a vuestros comentarios y dudas...

p.p.s. Como lograron corregirme un poco, /proc/dumchar_info no contiene linear_start_addr del scatter, sino físico_start_addr. Aquellos. en el ejemplo dado para la partición de recuperación tenemos:

lineal_start_addr: 0x4180000
dirección_inicio_física: 0x2D80000
tamaño_partición: 0x1000000

Y en /proc/dumchar_info vemos exactamente Physical_start_addr en la columna StartAddr. Pero si miramos el tamaño de la primera partición (precargador), queda claro cómo convertir Physical_start_addr a linear_start_addr; si agrega 0x1400000 a 0x2D80000 (este es exactamente el tamaño del precargador), entonces obtiene 0x4180000.

Publicaciones sobre el tema.