También he encriptado el /data
partición (en mi Samsung I9300) y quería restablecerlo para una actualización. Esto falló con el error que usted mencionó, /tmp/recovery.log
contiene:
ClockworkMod Recovery v6.0.3.2
recovery filesystem table
=========================
0 /tmp ramdisk (null) (null) 0
1 /efs ext4 /dev/block/mmcblk0p3 (null) 0
2 /boot emmc /dev/block/mmcblk0p5 (null) 0
3 /recovery emmc /dev/block/mmcblk0p6 (null) 0
4 /cache ext4 /dev/block/mmcblk0p8 (null) 0
5 /system ext4 /dev/block/mmcblk0p9 (null) 0
6 /data ext4 /dev/block/mmcblk0p12 (null) -16384
7 /preload ext4 /dev/block/mmcblk0p10 (null) 0
8 /modem emmc /dev/block/mmcblk0p7 (null) 0
9 /sdcard datamedia /dev/null (null) 0
10 /external_sd ext4 /dev/block/mmcblk1p1 (null) 0
<snip>
-- Wiping data...
Formatting /data...
I:Formatting unknown device.
W:failed to mount /dev/block/mmcblk0p12 (Invalid argument)
Error mounting /data!
Skipping format...
DESCARGO DE RESPONSABILIDAD : No me responsabilizo de nada que vaya mal, incluyendo (pero no limitándose a) un error del usuario.
Si desea borrar el /data
(incluyendo los medios de comunicación como las fotos), siga las siguientes instrucciones:
-
Arranque en la recuperación.
-
Ejecutar adb shell
en un terminal (Linux) o en el símbolo del sistema ("CMD", Windows). Después de unos segundos, debería ver una línea que contiene ~ #
.
-
ADVERTENCIA . Compruebe tres veces el comando que está introduciendo aquí. Los espacios en blanco y las mayúsculas son importantes. Si comete un error aquí, puede borrar accidentalmente toda la memoria flash, incluyendo las imágenes de recuperación.
NOTA Si quieres encriptar tu partición más tarde, tienes que dejar 16KiB de espacio sin asignar al final de la partición.
En el adb shell
ejecute el comando mke2fs -t ext4 /dev/block/mmcblk0p12
. Sustituir /dev/block/mmcblk0p12
y ext4
según la tabla del sistema de archivos de recuperación (para /data
). Salida al ejecutar el comando:
~ # mke2fs -t ext4 /dev/block/mmcblk0p12
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
755904 inodes, 3022848 blocks
151142 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3095396352
93 block groups
32768 blocks per group, 32768 fragments per group
8128 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
-
(Opcional) Instalar un nuevo firmware (por ejemplo, CM 10.1).
-
Reinicia.
-
(Opcional) Para cifrar la partición mientras se limpia toda la partición de datos, ejecute vdc cryptfs enablecrypto wipe PIN_OR_PASSWORD
(antes de Android 5.0) o vdc cryptfs enablecrypto wipe password PASSWORD_IN_HEX
(desde Android 5.0, véase este puesto para más detalles).
-
Reconfigurar el dispositivo, elegir el idioma, introducir el nombre, instalar aplicaciones, etc.
Los detalles técnicos son los siguientes.
El restablecimiento de fábrica se activa la opción de menú erase_volume("/data")
en recovery.c
que llama format_volume("/data")
.
format_volume
se define en roots.c
:
int format_volume(const char* volume) {
// <snip>
// check to see if /data is being formatted, and if it is /data/media
// Note: the /sdcard check is redundant probably, just being safe
if (strstr(volume, "/data") == volume && is_data_media() && !handle_data_media) {
return format_unknown_device(NULL, volume, NULL);
}
Dado que el nombre del volumen comienza efectivamente con /data
y la tabla del sistema de archivos de recuperación contiene una entrada para el tipo datamedia
y handle_data_media
es inicialmente cero, el formato format_unknown_device
se llama. Esa función se define en extendedcommands.c
de la siguiente manera:
int format_unknown_device(const char *device, const char* path, const char *fs_type)
{
LOGI("Formatting unknown device.\n");
if (fs_type != NULL && get_flash_type(fs_type) != UNSUPPORTED)
return erase_raw_partition(fs_type, device);
// if this is SDEXT:, don't worry about it if it does not exist.
if (0 == strcmp(path, "/sd-ext"))
{
// <snip>
}
if (NULL != fs_type) {
// <snip>
}
if (0 != ensure_path_mounted(path))
{
ui_print("Error mounting %s!\n", path);
ui_print("Skipping format...\n");
return 0;
}
fs_type
es NULL
y el path
es /data
. Esto significa que la ruta del código termina en ensure_path_mounted(path)
que es el lugar donde esta función falla. Mirando el nombre, ensure_path_mounted
intenta montar la partición por su nombre, lo que por supuesto falla, ya que la partición cifrada no está soportada en CWM. Por lo tanto, CWM se niega a "formatear" la partición (en realidad, lo único que hace es borrar todos los archivos excepto /data/media
después del montaje).
Por lo tanto, el objetivo es formatear /data
con ext4 (ver tabla de sistemas de archivos de recuperación) o montar la partición de datos encriptada de alguna manera. No pude encontrar fácilmente las herramientas para montar particiones encriptadas, así que decidí ir por el camino fácil y simplemente formatear la partición.
0 votos
¿Has probado a reiniciar el recovery original que venía con el dispositivo? Quizás eso te permita realizar un restablecimiento de fábrica a través del menú de ajustes del dispositivo.
0 votos
He intentado hacer esto pero no puedo averiguar cómo hacerlo a través de Heimdall (implementación Linux de ODIN) - ¿tiene que ser a través de ODIN? ¿Dónde puedo encontrar mi recuperación original? Puede que lo esté haciendo mal - ¿qué CÓMO debería seguir para esto?
1 votos
Creo que Heimdall podría hacerlo, siempre y cuando puedas encontrar una imagen de recuperación de stock en el formato adecuado. ¿De qué dispositivo se trata? A menudo, el subforo de XDA para un dispositivo tendrá una colección de varias imágenes de stock, así que ahí es donde yo empezaría, personalmente; el fabricante puede proporcionarlos, sin embargo, (nunca he comprobado si Samsung hace esto).
0 votos
¿Esto es correcto? forum.xda-developers.com/showthread.php?t=1863346
1 votos
Hm, no estoy del todo seguro si el paquete de la ROM en esas instrucciones tiene una imagen de recuperación o no. Si lo hace, entonces eso debería funcionar. Hay otro hilo en XDA que habla de unrooting el S3 que podría ayudar, también: forum.xda-developers.com/showthread.php?t=1710613 Eso debería reflashear tu dispositivo de vuelta al firmware stock de Samsung (habla de Odin pero deberías poder sustituirlo por Heimdall por lo que sé).
0 votos
¡Hola a todos! He flasheado mi teléfono finalmente sobre Odin y parece que funciona. Lo reinicio y aparece una pantalla de arranque diferente (por lo que estaba bastante emocionado) pero ahora es todavía pidiéndome que desencripte el teléfono. ¡¡Excepto que ahora mi antigua contraseña no funciona!!