3 votes

Impossible de faire une réinitialisation d'usine après le chiffrement

J'ai crypté mon téléphone mais maintenant je veux qu'il ne soit pas crypté et je dois faire une réinitialisation d'usine. Toutefois, si j'essaie de le faire à partir de la récupération CWM, il dit

-- Wiping data... 
Formatting /data...  
Error mounting /data!  
Skipping format... 
Formatting /cache...  
Formatting /sd-ext...  
Formatting /sdcard/.android_secure...
Error mounting /sdcard/.android_secure!
Skipping format... 
Data wipe complete.

Lorsque j'essaie de réinitialiser l'usine à partir de l'interface graphique normale, cela ne me donne pas d'erreur mais se termine très très rapidement et n'a pas fonctionné (on peut supposer que la sortie ci-dessus s'est produite dans les journaux).

Qu'est-ce que je peux faire ?

2voto

Lekensteyn Points 1552

J'ai également crypté le /data (sur mon Samsung I9300) et je voulais le réinitialiser pour une mise à niveau. Cela a échoué avec l'erreur que vous avez mentionnée, /tmp/recovery.log contient :

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...

CLAUSE DE NON-RESPONSABILITÉ : Je ne suis pas responsable de tout ce qui ne va pas, y compris (mais pas seulement) les erreurs de l'utilisateur.

Si vous souhaitez effacer le /data (y compris les médias tels que les photos), suivez les instructions ci-dessous :

  1. Démarrez en mode de récupération.

  2. Exécuter adb shell dans un terminal (Linux) ou une invite de commande ("CMD", Windows). Après quelques secondes, vous devriez voir apparaître une ligne contenant ~ # .

  3. AVERTISSEMENT . Vérifiez trois fois la commande que vous saisissez ici. Les espaces blancs et les majuscules sont importants. Si vous faites une erreur ici, vous risquez d'effacer accidentellement toute votre mémoire flash, y compris les images de récupération.
    NOTE si vous voulez crypter votre partition plus tard, vous devez laisser 16KiB d'espace non alloué à la fin de la partition.
    Dans le adb shell exécutez la commande mke2fs -t ext4 /dev/block/mmcblk0p12 . Substitut /dev/block/mmcblk0p12 y ext4 selon la table du système de fichiers de récupération (pour /data ). Sortie lors de l'exécution de la commande :

    ~ # 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.
  4. (Facultatif) Installez le nouveau firmware (par exemple CM 10.1).

  5. Redémarrage.

  6. (Facultatif) Afin de crypter la partition tout en effaçant toute la partition de données, exécutez vdc cryptfs enablecrypto wipe PIN_OR_PASSWORD (avant Android 5.0) ou vdc cryptfs enablecrypto wipe password PASSWORD_IN_HEX (depuis Android 5.0, voir ce poste pour plus de détails).

  7. Reconfigurer l'appareil, choisir la langue, saisir le nom, installer des applications, etc.


Détails techniques ci-dessous.

En réinitialisation l'élément du menu s'active erase_volume("/data") sur recovery.c qui appelle format_volume("/data") .

format_volume est défini dans 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);
    }

Puisque le nom du volume commence effectivement par /data et la table des systèmes de fichiers de récupération contient une entrée pour le type datamedia y handle_data_media est initialement zéro, le format format_unknown_device est appelé. Cette fonction est définie dans extendedcommands.c comme suit :

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 et le path es /data . Cela signifie que le chemin du code aboutit à ensure_path_mounted(path) qui est l'endroit où cette fonction échoue. En regardant le nom, ensure_path_mounted tente de monter la partition par son nom, ce qui échoue bien sûr puisque la partition chiffrée n'est pas prise en charge par CWM. Par conséquent, CWM refuse de "formater" la partition (en fait, tout ce qu'il fait, c'est effacer tous les fichiers, à l'exception de /data/media après le montage).

L'objectif est donc de formater /data avec ext4 (voir le tableau des systèmes de fichiers de récupération) ou monter la partition de données chiffrées d'une manière ou d'une autre. Je n'ai pas pu trouver facilement les outils permettant de monter des partitions cryptées, j'ai donc décidé d'opter pour la solution de facilité et de simplement formater la partition.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X