Partitionner un appareil iOS

La mémoire principale utilisée par l'iPhone pour stocker des données est la NAND, c'est en quelque sorte le disque dur de l'appareil. Il est possible d'effectuer sur la NAND la plupart des opérations que l'on effectue sur les disques durs classiques à savoir effacer, partitionner, formatter, etc.

Lors d'une restauration normale d'iOS avec iTunes par exemple, la table des partitions actuelle sur la NAND de l'appareil est écrasée puis deux nouvelles sont crées.

1) Une partition system montée en lecture seule sur /, dont la taille est définie dans le fichier [nom] présent dans le Ramdisk de restauration. Celle-ci accueil le système iOS

2) Une partition data montée en lecture et écriture dans le dossier /private/var, dont le reste de l'espace libre sera alloué. Celle-ci est contient uniquement les données de l'utilisateur.

Choses à savoir :

a) Apple utilise deux partitions, soit system et data, dans le but de faire les mises à jour d'iOS sans devoir effacer les données de l'utilisateur.

b) Selon les différentes versions d'iOS, Apple utilise une table de partition différente afin d'améliorer la sécurité des données.

1)iOS 1.x à 3.x, le schéma MBR est utilisé. 2)iOS 4.x, le schéma GPT est utilisé. 3)iOS 5.x à aujourd'hui, c'est LWVM, propriétaire à Apple.

Actuellement, aucun outil rendu publique permet d'éditer de façon stable le schéma de partition GPT ainsi que LWVM sur un appareil iOS.

Heureusement, un utilitaire nommé fdisk qui permet de manipuler les partitions MBR se trouve toujours dans le Ramdisk de restauration des firmwares iOS 4.x et 5.x.

Il est donc possible de repartitionner un appareil iOS en 4.x de façon à ce qu'il utilise le schéma MBR au lieu de GPT. Ceci nous permet alors de manipuler les partitions avec l'aide de l'outil fdisk.

Je n'ai pas essayé pour les versions 5.x et supérieures.


Marche à suivre pour (re)partitionner un appareil iOS.

ATTENTION, TOUTES LES DONNÉES PRÉSENTES SUR L'APPAREIL SERONT DÉFINITIVEMENT EFFACÉES puisque la table des partitions actuelle sera écrasée.

Outils nécéssaires :

a) Ramdisk SSH Automatique de Msftguy (nécéssite Java Runtime pour fonctionner)

b) PuTTY

1) Placer l'appareil en mode DFU. 2) Exécuter l'utilitaire de Msftguy pour démarrer le chargement du Ramdisk SSH Automatique. L'utilitaire injectera l'exploit BootROM Limera1n dans le mode DFU pour ignorer les vérifications de signatures et ainsi charger le Ramdisk modifié. Voir «La chaîne de démarrage jailbreakée (Pwned)» pour plus de détails. Ne pas fermer l'utilitaire de Msftguy parce que celui-ci se charge de faire le tunnel SSH sur la connection USBmux pour une connection SSH sans réseau Wi-Fi.

3) Une fois le Ramdisk SSH chargé, on se connecte sur l'appareil avec PuTTY en localhost sur le port 2022 en utilisant «root» comme nom d'utilisateur et «alpine» comme mot de passe. La connection s'étabiera alors en «root» sur le Ramdisk.

4) Exécuter fdisk

a) /usr/sbin/fdisk -e /dev/rdisk0 ou simplement fdisk -e /dev/rdisk0

Erreur d'affichage de la photo

b) fdisk: 1> edit X, dont X est le numéro de partition. Le numéro doit être de 1 à 4 puisque l'on utilise le schéma MBR qui permet seulement l'utilisation d'un maximum de 4 partitions primaires. Puisque l'on écrase le shcéma de partition précédent (GPT ou LWVM), l'on doit repartitionner au complet la NAND de l'appareil. On commence donc par le numéro de partition 1.

Erreur d'affichage de la photo

c) On choisit la valeur AF pour HFS+ comme ID de partition.

d) Do you wish to edit in CHS mode? On choisit l'option par défaut, soit n pour non.

e) On choisi le début du disque (NAND) comme premier «Partition offset», on choisit donc l'option par défaut.

f) On définit le «Partition size», attention les valeurs ne sont pas en Ko, Mo ni Go. On connait la taille totale de la NAND par la capacité de l'iPhone, donc on peut faire des divisions pour obtenir la taille de partition souhaitée. Exemple, on veut créer quatre partitions sur un iPhone de 16 Go. Pour ce faire, on fait [Taille maximale pour la partition] / 4 pour pour obtenir la valeur qui définit environ 4 Go par partition.

Erreur d'affichage de la photo

g) On refait les étapes b) à f) pour les autres partitions.

Erreur d'affichage de la photo

h) Quand le partitionnement est terminé, entre la commande fdisk:*1> quit, pour écrire la MBR sur la NAND.

Erreur d'affichage de la photo

5) L'appareil maintenant partitionné, il faut initialiser les nouveaux volumes HFS+.

a) /sbin/newfs_hfs -s -v System -b 8192 -n a=8192,c=8192,e=8192 /dev/disk0s1 initialise la partition s1 du disk0 en utilisant System comme nom de volume. C'est la commande utilisée par iTunes pour l'initialisation de la partition système iOS.

b) /sbin/newfs_hfs -s -v Data -J -P -b 8192 -n a=8192,c=8192,e=8192 /dev/disk0s2 initialise la partition s2 du disk0 en utilisant Data comme nom de volume. C'est la commande utilisée par iTunes pour l'initialisation de la partition de données.

c) Répéter pour les autres partitions si l'on désire les initialiser en utilisant la commande a) pour une partition système et b) pour des données.

6) L'appareil est maintenant partitionné, on peut alors restaurer une image ou bien, monter les partitions pour sauvegarder des données.


Copyright © 2017 — Pierre-Marc Bonneau

Conditions d'utilisation