Tutoriel - Redimensionner la partition USER d'un dump de NAND (pour emuMMC Atmosphère)
Introduction:
Ce tutoriel va intéresser les amateurs de l'emuMMC intégré dernièrement au CFW Atmosphère. En effet, vous avez maintenant la possibilité sur AMS de lancer une NAND "alternatif" stockée sur votre carte SD (au lieu d'utiliser celle sur la puce mémoire de votre switch appellé sysNAND). Le redimensionnement de la partition USER (qui contient vos données utilisateur) est utile dans le cas d'un emuMMC/emuNAND pour récupérer une partie du stockage perdu (en moyenne 20Go), en effet il est inutile d'avoir un emuMMC de 32Go puisque vous installez tous vos jeux dans la SD et le dossier Nintendo.
Pré-requis:
- Un ordinateur sous Windows, macOS ou Linux
- Avoir Python3 sur sa machine
- Un dump de NAND (splitté ou non) réalisable très facilement avec Hekate, il vous faudra à la fin les fichiers BOOT0 BOOT1 et RAWNAND.BIN (ou RAWNAND.BIN.00, RAWNAND.BIN.01... dans le cas d'un dump splitté)
- Votre fichier prod.keys contenant vos BIS KEY 3 (permettant de decrypter la partition USER) que vous pouvez obtenir via le payload LockpickRCM
Etape 1 - Préparation des fichiers:
Nous allons commencer par fusionner les fichiers du dump de NAND en un seul fichier nommé emummc.bin.
Dans le cas d'un dump non-splitté:
cat BOOT0 BOOT1 rawnand.bin > emummc.bin # Sur macOS ou Linux copy /b BOOT0+BOOT1+rawnand.bin emummc.bin # Sur Windows
Dans le cas d'un dump splitté:
cat BOOT0 BOOT1 rawnand.bin.* > emummc.bin # Sur macOS ou Linux copy /b BOOT0+BOOT1+rawnand.bin.* emummc.bin # Sur Windows
Nous nous retrouvons maintenant en possession de notre fichier emummc.bin
Etape 1B - Uniquement utilisateur macOS
Cette étape vous est destine uniquement si vous êtes un utilisateur de macOS. Merci à @shadow_shd pour les précisions.
Installer mbedtls via Homebrew (brew)
brew install mbedtls
Si vous n'avez pas le gestionnaire de paquet Homebrew sur votre installation macOS, ça s'installe très facilement avec:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubus.../master/install)"
Etape 2 - Récupération du script:
1) Télécharger le script sur https://gist.github....75f2720a1e5e486, sur la page cliquez sur Download ZIP afin de récupérer une archive contenant le script resize-user.py
2) Installer la dépendance mbedtls avec PIP pour que le script puisse fonctionner:
python3 -m pip install -U python-mbedtls # Sur macOS ou Linux py -3 -m pip install -U python-mbedtls # Sur Windows
Etape 2 - Récupération du script:
1) Télécharger le script sur https://gist.github....75f2720a1e5e486, sur la page cliquez sur Download ZIP afin de récupérer une archive contenant le script resize-user.py
2) Installer la dépendance mbedtls avec PIP pour que le script puisse fonctionner:
python3 -m pip install -U python-mbedtls # Sur macOS ou Linux py -3 -m pip install -U python-mbedtls # Sur Windows
Etape 3 - Redimensionner la partition USER:
Placez-vous dans le dossier contenant le script resize-user.py et mettez dans le même dossier vos fichiers emummc.bin et prod.keys. Exécuter la commande ci-dessous:
python3 resize_user.py emummc.bin <nouvelle taille de la partition en GiB> prod.keys
Le fichier est automatiquement redimensionné, si vous indiquez une taille invalide le script la refusera, ne spécifiez pas l'unité G après votre taille donnez uniquement un nombre.
Si vous comptez réaliser un emuMMC sur Atmosphère en mode partition caché, vous pouvez vous arrêtez ici et écrire le fichier emummc.bin sur la partition de votre carte SD.
Si vous voulez récupérer les fichiers de votre dump BOOT0 BOOT1 et rawnand.bin afin de réaliser un emuMMC en mode fichier ou quelque chose d'autre. Vous pouvez passer à l'étape 4.
(OPTIONNELLE) Etape 4 - Extraire le BOOT0 BOOT1 & rawnand.bin à partir d'un emummc.bin:
Pour se faire nous allons utiliser la commande DD de Linux et macOS, si vous êtes sur Windows vous pouvez récupérer le binaire de DD à cette adresse: http://www.chrysocome.net/dd
Ensuite utilisez les commandes ci-dessous:
dd bs=1c count=4194304 if=emummc.bin of=boot0.bin dd bs=1c skip=4194304 count=4194304 if=emummc.bin of=boot1.bin dd bs=1c skip=8388609 if=emummc.bin of=rawnand.bin
Merci à shadow256 pour les commandes même si elles sont très longues, en l'attente d'une nouvelle façon de faire
Terminé, vous avez redimensionné votre dump, vous pouvez aller le tester Dans ce tutoriel je l'ai réduit de environ 10Go mais on aurait pu très largement viser plus haut. De cette façon on récupéré une grande partie de l'espace du dump.