He limpiado todas las particiones de mi Motorola XT1040 con la recuperación de TWRP, y le he instalado Cyanogen 13.
Entonces me encuentro con problemas al tratar de activar la encriptación. El teléfono se reinicia y no cambia nada. Este es un problema conocido y se describe aquí .
Quería seguir un procedimiento descrito en esta respuesta (también compruebe la enlace externo en él, para referencia), que según se informa funciona. La explicación es:
Cuando se encripta el teléfono, la partición /dev/block/mmcblk0pXX - que originalmente contenía un sistema de archivos ext4 que se montaba como /data y /sdcard - ahora contiene un contenedor de cifrado. Esto será desencriptado al principio del proceso de arranque y devuelve una partición lógica /dev/block/dm-0 que luego contiene el sistema de archivos ext4 para /datos y /sdcard. El registro de arranque de TWRP muestra eso:
(...)
continúa con el montaje de la tarjeta SD y luego las otras particiones /boot, /recovery, /system, y así sucesivamente.
El lector atento podría haber reconocido que la extensión reportada es -16384 que es sospechosamente igual al 16KiB mencionado por diogenesj.
Así que a diferencia de las versiones anteriores de CM, "teléfono encriptado" ya no aborta dejando el teléfono sin encriptar pero utilizable, pero encriptado y por lo tanto corrompe la partición de datos de forma irreversible.
Para arreglar eso, el sistema de archivos en /dev/block/mmcblk0pXX necesita estar en por lo menos 16KiB más pequeño que la propia partición, que puede ser fácilmente hecho por resize2fs.
En resumen, la solución propuesta es redimensionar el /data
partición, quitando algunos sectores de ella...
Importante es el número de bloques (...) De este número, restamos 8, lo que deja no 16KiB sino un espacio seguro de 32 KiB para el encabezamiento de la encriptación (no te importa 16KiB en un volumen de 12GB, en serio)
El número real de bloques que se retirarán de la /data
la partición depende de la tamaño del sector para la partición. En el ejemplo anterior es 4KB, así que 8x4 =32 .
El problema con estas instrucciones es que sólo se aplican a la ext2
- ext4
sistemas de archivos; los comandos necesarios ( e2fsck
, tune2fs
, resize2fs
) no funcionará con el Sistema de archivos F2FS utilizado por el sistema operativo Cyanogen v13.
Lo hice. ls
en el sbin
y encontré el directorio fsck.f2fs
que usé en lugar de los dos primeros comandos de las instrucciones. A continuación están los pasos de root ADB Shell (iniciada en TWRP):
~ # mount | grep data
/dev/block/platform/msm_sdcc.1/by-name/modem on /firmware type ext4 (rw,seclabel,relatime,data=ordered)
/dev/block/mmcblk0p36 on /data type f2fs (rw,seclabel,relatime,background_gc=on,user_xattr,inline_xattr,acl,inline_data,active_logs=6)
/dev/block/mmcblk0p36 on /sdcard type f2fs (rw,seclabel,relatime,background_gc=on,user_xattr,inline_xattr,acl,inline_data,active_logs=6)
/dev/block/mmcblk0p33 on /cache type ext4 (rw,seclabel,relatime,data=ordered)
~ # umount /dev/block/mmcblk0p36
~ # fsck.f2fs -f /dev/block/mmcblk0p36
Info: Force to fix corruption
Info: sector size = 512
Info: total sectors = 11583232 (in 512 bytes)
Info: MKFS version
"Linux version 3.4.42-g5e5969d-dirty (luca@luca020400-arch) (gcc version 4.9.x-google 20140827 (prerelease) (GCC) ) #1 SMP PREEMPT Sun Feb 7 22:11:19 CET 2016"
Info: FSCK version
from "Linux version 3.4.42-ge95f63d (inky@cyanogenmod) (gcc version 4.9.x-google 20140827 (prerelease) (GCC) ) #1 SMP PREEMPT Sun May 29 05:22:11 PDT 2016"
to "Linux version 3.4.42-g5e5969d-dirty (luca@luca020400-arch) (gcc version 4.9.x-google 20140827 (prerelease) (GCC) ) #1 SMP PREEMPT Sun Feb 7 22:11:19 CET 2016"
[FSCK] Unreachable nat entries [Ok..] [0x0]
[FSCK] SIT valid block bitmap checking [Ok..]
[FSCK] Hard link checking for regular file [Ok..] [0x0]
[FSCK] valid_block_count matching with CP [Ok..] [0x3c295]
[FSCK] valid_node_count matcing with CP (de lookup) [Ok..] [0x1622]
[FSCK] valid_node_count matcing with CP (nat lookup) [Ok..] [0x1622]
[FSCK] valid_inode_count matched with CP [Ok..] [0x156b]
[FSCK] free segment_count matched with CP [Ok..] [0x831]
[FSCK] next block offset is free [Ok..]
[FSCK] fixing SIT types
[FSCK] other corrupted bugs [Ok..]
Done.
Así que, mi /data
la partición es mmcblk0p36
y tiene un tamaño de 11.583.232 sectores. Cada sector es de 512 bytes, por lo que debo reducir la partición a un tamaño final de (11 583 232 - 64) = 11 583 168
sectores para dejar 32KB sin localizar.
¿Pero cómo se puede hacer? Todo parece indicar que no es posible encoger una partición F2FS, pero no estoy seguro.
Editar: Parece que la reducción de volumen no está todavía soportada para el F2FS. Así que, asumiendo que hice una copia de seguridad completa del /data
partición, ¿cuáles son los pasos para eliminarlo y recrearlo con un tamaño más pequeño?
1 votos
Recrear la partición con un tamaño más pequeño no solucionaría tu problema, si leo bien las comillas: Para arreglar eso, el sistema de archivos en
/dev/block/mmcblk0pXX
debe ser de al menos 16KiB más pequeño que la propia partición (el énfasis es mío). No tengo experiencia con el F2FS, pero ¿hay unamkf2fs
omkfs.f2fs
¿comando disponible? Podrías ejecutarlo con los parámetros adecuados para volver a crear el sistema de archivos con el tamaño correspondiente (lo que, por supuesto, destruiría todos los datos del sistema de archivos actual en esa partición, así que haz primero una copia de seguridad).0 votos
@Izzy ¡Funcionó! Gracias amigo. Te acredité en Unix y Linux SE .
1 votos
Me alegro de leerlo. Y gracias por publicarlo como respuesta con detalles (upvoted ;)