5 votes

Comment redimensionner la partition /data de F2FS ?

Le contexte :

J'ai effacé toutes les partitions de mon appareil Moto G avec la récupération TWRP et installé Cyanogen 13 dessus. Ensuite, j'ai eu des problèmes lors de l'activation du cryptage : le téléphone redémarre simplement mais ne crypte pas. C'est un problème connu et est décrit ici .

Je voulais suivre une procédure décrite dans cette réponse (sur la base de ce ), qui semble fonctionner. L'explication est la suivante :

Lors du cryptage du téléphone, la partition /dev/block/mmcblk0pXX - contenant à l'origine un système de fichiers ext4 monté en tant que /data et /sdcard - contient maintenant un conteneur de chiffrement. Celui-ci sera décrypté au début du processus de démarrage et retourne une partition logique /dev/block/dm-0 qui contient alors le système de fichiers ext4 pour /data et /sdcard. (...)

Pour corriger cela, le système de fichiers dans /dev/block/mmcblk0pXX doit être à au moins 16KiB plus petit que la partition elle-même, ce qui peut facilement être facilement par resize2fs.

En résumé, la solution proposée consiste à redimensionner l'image de l'entreprise. /data partition, en enlevant quelques secteurs...

L'important est le nombre de blocs (...) De ce nombre, nous soustrayons 8, ce qui laisse non pas 16KiB mais un espace sûr de 32 KiB pour l'en-tête de cryptage (16KiB ne vous dérange pas sur un volume de 12GB, sérieusement)

Le nombre réel de blocs à retirer de la base de données. /data dépend de la taille du secteur pour la partition. Dans l'exemple ci-dessus c'est 4KB, donc 8x4 =32 .


Le problème

Ces instructions ne s'appliquent qu'au ext2/3/4 les systèmes de fichiers ; les commandes nécessaires ( e2fsck, tune2fs, resize2fs ) ne fonctionnera pas avec le Partition F2FS utilisé par Cyanogen v13.

J'ai trouvé fsck.f2fs dans le /sbin que j'ai utilisé à la place de e2fsck y tune2fs . Voici les étapes à partir du shell ADB Root, démarré sur 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)

(...)

Donc, mon /data la partition est mmcblk0p36 et sa taille est de 11 583 232 secteurs. Chaque secteur fait 512 octets, je dois donc réduire la partition à une taille finale de 11 583 168 afin de laisser 32KB non alloués.

Mais comment faire ? Tout semble indiquer que le rétrécissement d'une partition F2FS n'est pas possible, mais je n'en suis pas sûr. Si ce n'est pas le cas, et en supposant que j'ai fait une sauvegarde complète de la partition F2FS, j'aimerais savoir si je peux la rétrécir. /data partition, quelles sont les étapes pour le supprimer et le recréer avec une taille plus petite ?

4voto

Marc.2377 Points 404

À ce jour (30 mai 2016), le système de fichiers F2FS ne prend pas en charge le rétrécissement. Si c'est le cas au moment où quelqu'un lit ceci, faites-le moi savoir dans les commentaires.

La solution consiste alors à supprimer et recréer l'ensemble du système de fichiers pour /data . De cette réponse connexe sur Unix & Linux Stack Exchange :

mkfs.f2fs /dev/block/mmcblk0p36 11583168

Cela fera l'affaire. Après avoir redémarré et restauré la sauvegarde, et enfin, redémarré vers Android, le processus de cryptage a fonctionné.

Important : Assurez-vous de vérifier Use rm -rf instead of formatting des paramètres TWRP avant de restaurer la sauvegarde.

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