Aller au contenu


Hyuunkel

Inscrit(e) (le) 11 oct. 2019
Déconnecté Dernière activité déc. 15 2019 14:38
-----

#1079395 [Tuto] (CLI) Redimensionnement et déplacement de la partition emuMMC

Posté par Hyuunkel - 14 novembre 2019 - 16:06

@Hyuunkel, pourrais-tu mettre à jour le lien de NxNandManager vers la dernière release stp car des bugs sévères ont été corrigés dans les deux dernières versions (actuellement 3.0.2) ? Thx ^^

 

Fait ;)




#1077675 [Tuto] (CLI) Redimensionnement et déplacement de la partition emuMMC

Posté par Hyuunkel - 28 octobre 2019 - 04:47

// Tuto V3 :

 

 

Hello,

Voici l'explication compléte du redimensionnement de l'emummc partition de A à Z.

Dans ce tuto, j'utilise la commande "DD" également utilisable sous linux/mac.

L’exécutable windows se trouve ici : http://www.chrysocom...oads/dd-0.5.zip


Information I (Optionnel) - Composition emuMMC :

1 secteur = 512 octets

Boot0 : Offset : 0 à 3FFFFF
Boot0 : Secteur 0x2000 (0x0000-0x1FFF) = 8192
Taille : 8192 x 512 = 4194304 o = 4096 Ko = 4 Mo

Boot1 : Offset : 0 à 3FFFFF
Boot1 : Secteur 0x2000 (0x2000-0x3FFF) = 8192
Taille : 8192 x 512 = 4194304 o = 4096 Ko = 4 Mo

Rawnand : Offset : 0 à 747BFFFFF
Rawnand : Secteur 0x03A3E000 (0x00000000-0x03A3DFFF) = 61071360
Taille : 61071360 x 512 = 31268536320 o = 30535680 Ko = 29820 Mo

Emummc : Offset 0 à 7483FFFFF
Emummc : Secteur  0x03A42000 (0x00000000-0x03A41FFF) = 61087744
Taille : 61087744 x 512 = 31276924928 o = 30543872 Ko = 29828 Mo

Composition emummc :
= Boot0 : Offset 0 à 3FFFFF // Secteur 0 à 8191
+ Boot1 : Offset 400000 à 7FFFFF // Secteur 8192 à 16383
+ Rawnand Offset 800000 à 7483FFFFF // Secteur 16384 à 61087743

 

 

Information II (Optionnel) - Composition de la Partition emuMMC :

Lors de la création de l'emuMMC en mode partition (par hetake), ce dernier laisse un "tampon" avant le commencement de l'emuMMC.

il faut donc le prendre en compte lors de la création de la partition et ne pas juste créer une partition de la taille de l'emuMMC !!!

// Partition emuMMC (0xe0) :

Taille par défaut :61120512 secteurs x 512 = 31293702144 o = 30560256 ko = 29844 Mo
= Tampon : 32768 secteurs
Taille Tampon : 32768 x 512 = 16777216 o = 16384 ko = 16 Mo
+ emummc : 61087744 x 512 = 31276924928 o = 30543872 Ko = 29828 Mo
 

 

 

I - Sauvegardes des jeux :

 

Attention : Lors de la manipulation du redimensionnement et/ou du déplacement de l'emuMMC, l'emplacement physique des sauvegardes va être modifié et certaine peuvent se retrouver effacé, ou corrompu.

En résultera une erreur au lancement des jeux après déplacement / redimensionnement.

 

1) Utiliser l'homebrow Checkpoint et faire une sauvegarde de tous les jeux.

Note :si les jeux installé n'ont pas été lancé au moins une fois : l'homebrow crash.

2) Effacer les sauvegarde la console (celle de la partition user) et conserver celle créer dans sd:\\switch\checkpoint\

3) A la fin des manipulations du tuto : Réintégrer les sauvegardes via chekpoint (si besoin en lançant les jeux au préalable)

 

 

II a - Nouveau emuMMC (sysnand) :

Dans le cas de la création d'une nouvelle emuMMC (basé sur Sysnand).

 

1) Soit :

- passer par la switch et payload hekate pour faire le backup sysnand

- mettre la carte µSD dans le PC et l'ouvrir avec NxNandManager 3

 

2) Récupérer les backups de la carte µSD puis fusionner les fichiers avec la commande :

copy /b BOOT0+BOOT1+rawnand.bin.* emummc.bin

_

 

Information III (Optionnel) - séparation de l'emuMMC (boot0 + boot1 + rawnand) :

     

 

En cas de besoin l'emuMMC peut toujours être séparé :

Mode "lent" (octet) :

dd bs=1c count=4194304 if=emummc.bin of=boot0.bin --progress
dd bs=1c skip=4194304 count=4194304 if=emummc.bin of=boot1.bin --progress
dd bs=1c skip=8388608 count=31268536320 if=emummc.bin of=rawnand.bin --progress

Mode "moyen" (secteur) :

dd bs=512 count=8192 if=emummc.bin of=boot0.bin --progress
dd bs=512 skip=8192 count=8192 if=emummc.bin of=boot1.bin --progress
dd bs=512 skip=16384 count=61071360 if=emummc.bin of=rawnand.bin --progress

Mode "rapide" (ko) :

dd bs=4096k count=1 if=emummc.bin of=boot0.bin --progress
dd bs=4096k skip=1 count=1 if=emummc.bin of=boot1.bin --progress
dd bs=4096k skip=2 count=7455 if=emummc.bin of=rawnand.bin --progress

_

191028050030413537.jpg

 

 

 

II b - Backup emuMMC (déjà existant) :

1) Sur la carte SD : ouvir le fichier (original) : SD:\\emuMMC\emummc.ini

2) Récupérer le secteur de départ de l'emunand (ou emuMMC) en hexa :
Exemple sur une 128go : sector=0xae88000

3) Convertir le secteur hexadécimale en décimale
Par exemple : http://sebastienguil...vertisseur.html
ae88000 (le 0x n'as pas d'incidence) => 183009280

4) Identifier la sd :
- soit via le gestionnaire de périphérique
- soit un outil de partitionnement tel que "MiniTool Partition Wizard" (que je recommande)
- soit avec la commande DD (téléchargé au début du tuto) :

 dd --list

_

Dans mon exemple la sd est \\?\Device\Harddisk5

 

19102805002814862.jpg
 

 

5) Backup emuMMC : Ligne de commande DD :

 

Secteur de départ d'emuMMC : 183009280
Nombre de secteur d'emuMMC : 61087744

 

Attention la commande (pourtant logique) suivante ne fonctionnent pas avec une carte sd ou clé usb :

dd bs=512 skip=183009280 count=61087744 if=\\?\Device\Harddisk5 of=emummc.bin --progress

Il faut utiliser à la place :

dd bs=512 skip=183009280 count=61087744 if=\\.\physicaldrive5 of=emummc.bin --progress

Note : "5" étant le numéro de la partition trouvé à l'étape II b 4.

 

6) Backup emuMMC : copie rapide :

Pour passer au mode "rapide" (vu en partie Information III), on peux diviser le nombre de secteur par 8192.

Secteur de départ d'emuMMC : 183009280 / 8192 = 22340
Nombre de secteur d'emuMMC : 61087744 / 8192 = 7457

Taille du bloc de copie : 512 x 8192 / 1024 = 4096

dd bs=4096k skip=22340 count=7457 if=\\.\physicaldrive5 of=emummc.bin --progress

_

 

Attention ! : ce mode "rapide" nécessite un nombre entier !

Si on tombe sur un nombre à virgule, on peux rediviser successivement par 2, jusqu’à un entier.

 

Exemple : 19E2F000 = 434302976

434302976 / 8192 = 53015,5 => Fail

434302976 / 4096 (8192 / 2) = 106031 => ok donc on peux continuer (sinon on redivise 2048,1024 etc...)

61087744 / 4096 =14914

Taille du bloc de copie : 512 x 4096 / 1024 = 2048

dd bs=2048k skip=106031 count=14914 if=\\.\physicaldrive5 of=emuMMC.bin --progress

_

Information IV (Optionnel) - Départ de la partition :

Comme évoqué en partie "information II", le secteur de départ de la partition peut-être trouvé :

 

1) Dans les propriété de la partition via un outil comme "Partition Wizard".

 

2) Si on soustrait le tampon du secteur de départ emummc (trouvé en partie II b 3)

 

183009280 - 32768 = 182976512
Secteur de départ de partition initiale : 182976512

 

 

III - Resize user : V2 - NxNandManager

 

MAJ : la toute nouvelle version de NxNandManager, permet d'effectuer cette étape, très simplement et sous windows [merci à eliboa].

L'ensemble du tuto est donc désormais faisable sous windows :).

Note : Je laisse disponible l'ancienne méthode tout en bas du tuto pour ceux qui serait intéressé !

 

1) Télécharger NxNandManager 3

 

2)  Ouvrir la NAND qu'on veut redimensionner

 

3) Dans Options, charger le fichier clé de la console (récupéré via payload Lockpick_RCM)

 

4) Dans Tools, choisir Resize NAND

 

5) Renseigner la taille voulue pour la partition USER et le fichier de destination puis lancer le redimensionnement

 

Nx-Nand-Manager-resize-user.png

 

 

IV - Restauration / Migration carte SD :

A présent que nous avons l'emunand resize, il faut l'écrire sur la carte SD, et cela pas au même endroit qu'elle était au départ...

Ce qui permet également d'effectuer une migration vers une carte SD de plus grande capacité :).

 

0) Dans le cas d'un changement de carte SD :

Créer la partition fat32 : taille = {total carte sd} - {partition emummc}*

* Non obligatoire mais pour rappel {partition emummc} = tampon (voir partie "Information II") + emummc (resize ou non)

 

1) Avec l'outil de votre choix, on supprime l'ancienne partition emmuMMC (elle peut être "non formaté" ou dans un système "other" selon la méthode de création initiale)

 

2) On créer une partition de la taille de l'emunand resize, puis on réattribue l'espace gagné à la FAT32.

 

191028050034549664.jpg

 

 

3) Optionnel : Pour respecter le tampon vu partie "Information II et IV" :
On fait donc l'opération inverse avec le secteur de la nouvelle partition resize :

Secteur de départ de partition resize : 216530944
Tampon : 32768
Secteur de départ emunand resize : 216530944 + 32768 = 216563712
Conversion en hexa : 216563712 : ce88000

 

191028050035210440.jpg

 

4) Optionnel :Si on veux respecter encore plus le mode de création de hekate, on peux modifier le type de partition (toujours avec partition wizard).

0x7 : Unformatted

0xe0 : Other (utilisé par hekate)

Note : sur certaine version de partition wizard, on ne peux pas saisir la lettre du type de partition, l'astuce consiste donc juste à saisir "99" (pour 0x99) et de faire "+" pour passer a A0 et "++++...."jusqu'a "e0"

 

5) Optionnel : pour vérifier qu'il n'y a pas d'erreur sur le secteur :
Numéro de secteur x 512 /1024 / 1024 / 1024 = Taille (Go) qu'on devrait avoir sur la FAT32 resize.
Exemple : 216530944 x 512 /1024 /1024 / 1024 = 103.25
J'ai bien désormais une partition FAT32 de 103Go.

6) Dans SD:\emuMMC\emummc.ini on renseigne :
sector=0xce88000

(uniquement pour la partition de mon exemple bien sur... mettre vos propres valeurs).

 

7) Et enfin, on renomme et écrit l'emunand (emummc) resize :
 

dd bs=512 seek={nouveau_secteur_de_depart_emunand} if=emummc.bin of=\\.\physicaldriveX --progress

_

Attention : idem qu'en partie "II B 5" certaine commande ne fonctionne pas :

dd bs=512 seek=216563712 if=emummc.bin of=\\?\Device\Harddisk5 --progress
dd bs=512 seek=32768 if=emummc.bin of=\\?\Device\Harddisk5\Partition1 --progress
dd bs=512 seek=32768 if=emummc.bin of=\\?\Device\HarddiskVolume8 --progress

_

Exemple fonctionnel :

dd bs=512 seek=216563712 if=emummc.bin of=\\.\physicaldrive5 --progress

Si quelqu'un se pose la question, le seek est bien de 216563712 (dans mon exemple) et non pas de 216563712 -1 = 216563711.
On pourrait effectivement se dire que le secteur de départ de l'emunand étant 216563712 on doit "sauter" 216563711 secteurs... Seulement le disque commence au secteur 0 et non 1, du coup le secteur de départ de l'emunand est bien 216563712 mais c'est le 216563713 ème secteur du disque et donc on "saute" bien 216563712 (de 0 à 216563711).

Comme en partie "II b 6", on peux accélérer l'écriture : 216563712 / 8192 = 26436

dd bs=4096k seek=26436 if=emummc.bin of=\\.\physicaldrive5 --progress

_

191028050036730174.jpg

 

 

8) Optionnel : vérification
On peux vérifier (avec un éditeur hexa) que l'emuMMC commence bien au secteur 216563712.
Note : il y a 1 secteur "vide" au début de l'emuMMC, donc les datas commencent à 216563712 + 1 = 216563713 (ou 216563714 eme secteur).

 

9) Si on à migré la carte SD et donc effectué l'étape "IV - 0" :

Attention : cette étape dois être impérativement réalisé AVANT le moindre boot Atmosphere sur la console !!! (sinon il faudrat tout réinstaller)

- Copier l'intégralité du contenu de la partition Fat32 de l'ancienne carte SD vers la partition FAT32 de la nouvelle carte SD à l'exception du fichier emummc.ini (SD:\\emuMMC\emummc.ini).

Note : Passer par une copie intermédiaire sur le PC si on possède 1 seul lecteur de carte.

 

 

V - Conclusion :

 

 

On peux même réduire beaucoup plus sans problème, j'ai testé avec user 3Go.

 

 

191028050038443189.jpg

 

191028050037353288.jpg

 

@ bientôt ^^

 

 

----------

 

 

Obsolète :

III - Resize user : V1 - Script python linux/mac only

Pour resize la partition User, j'utilise le script de ce "tuto" :
http://www.logic-sun...mmc-atmosphere/

Disponible ici :
https://gist.github....75f2720a1e5e486

 

Basé cette source :

https://pastebin.com/vPY4HLdV

 

Attention : contrairement au tuto et malgré mes très nombreuses tentatives il m'a été impossible de le faire fonctionner sous windows.
Il faudra donc passer sur un PC linux ou une machine virtuel pour cette étape :/.

1) Placer le script "resize-user.py", "emummc.bin" et "prod.keys" dans un dossier.

2) Puis exécuter successivement :

sudo su
apt update
apt install python3
apt install python3-pip
apt upgrade python3-pip
pip3 install --upgrade pip
pip3 install --upgrade setuptools
pip3 install -U python-mbedtls
sudo chmod 777 *
sudo python3 resize-user.py emummc.bin X prod.keys

X étant le nombre de Go souhaitez pour la partition user.

Sera ajouté à cette taille + 2.6 Go des autres partitions (system, etc.)

191028050036290482.jpg