Line 1: |
Line 1: |
| = NAND structure = | | = NAND structure = |
− | The Switch's eMMC storage features a large user area, two smaller boot partitions, and a replay-protected memory block which is unused (no authentication key is programmed). | + | The Switch's eMMC storage features a large user area, two smaller boot partitions and a replay-protected memory block which is unused (no authentication key is programmed). |
| + | |
| + | All official partition names come from [[SystemInitializer]]. |
| | | |
| == Boot Partitions == | | == Boot Partitions == |
| | | |
| '''Boot Partition 0 (0 of 1)''' | | '''Boot Partition 0 (0 of 1)''' |
| + | |
| + | The official name for this partition is "BootPartition1Root" and it has [[Filesystem_services|Bis]] Partition ID == 0. |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 13: |
Line 18: |
| | 0x000000 | | | 0x000000 |
| | 0x4000 | | | 0x4000 |
− | | Title 0100000000000819 [[BCT|BCT]] | + | | Normal Firmware [[BCT|BCT]] from [[Title_list#System_Data_Archives|Title 0100000000000819]] |
| |- | | |- |
| | 0x004000 | | | 0x004000 |
| | 0x4000 | | | 0x4000 |
− | | Title 010000000000081A [[BCT|BCT]] | + | | SafeMode Firmware [[BCT|BCT]] from [[Title_list#System_Data_Archives|Title 010000000000081A]] |
| |- | | |- |
| | 0x008000 | | | 0x008000 |
| | 0x4000 | | | 0x4000 |
− | | Title 0100000000000819 [[BCT|BCT]] | + | | Normal Firmware [[BCT|BCT]] from [[Title_list#System_Data_Archives|Title 0100000000000819]] (backup) |
| |- | | |- |
| | 0x00C000 | | | 0x00C000 |
| | 0x4000 | | | 0x4000 |
− | | Title 010000000000081A [[BCT|BCT]] | + | | SafeMode Firmware [[BCT|BCT]] from [[Title_list#System_Data_Archives|Title 010000000000081A]] (backup) |
| |- | | |- |
| | 0x010000 | | | 0x010000 |
Line 33: |
Line 38: |
| | 0x100000 | | | 0x100000 |
| | 0x40000 | | | 0x40000 |
− | | Title 0100000000000819 "package1" | + | | Normal Firmware [[Package1|package1]] from [[Title_list#System_Data_Archives|Title 0100000000000819]] |
| |- | | |- |
| | 0x140000 | | | 0x140000 |
| | 0x40000 | | | 0x40000 |
− | | Title 0100000000000819 "package1" (Backup) | + | | Normal Firmware [[Package1|package1]] from [[Title_list#System_Data_Archives|Title 0100000000000819]] (backup) |
| |- | | |- |
| | 0x180000 | | | 0x180000 |
Line 49: |
Line 54: |
| | 0x184020 | | | 0x184020 |
| | 0x8? | | | 0x8? |
− | | Increments on every boot until hitting a certain number? Bottom 10 bits (0x3FF) are always zero. All zero on 1.0. | + | | Increments on every boot until hitting a certain number? Bottom 10 bits (0x3FF) are always zero. All zero on 1.0. |
| |} | | |} |
| | | |
| '''Boot Partition 1 (1 of 1)''' | | '''Boot Partition 1 (1 of 1)''' |
| + | |
| + | The official name for this partition is "BootPartition2Root" and it has [[Filesystem_services|Bis]] Partition ID == 10. |
| + | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
| |- | | |- |
Line 61: |
Line 69: |
| | 0x000000 | | | 0x000000 |
| | 0x40000 | | | 0x40000 |
− | | Title 010000000000081A "package1" | + | | SafeMode Firmware [[Package1|package1]] from [[Title_list#System_Data_Archives|Title 010000000000081A]] |
| |- | | |- |
| | 0x040000 | | | 0x040000 |
| | 0x40000 | | | 0x40000 |
− | | Title 010000000000081A "package1" (Backup) | + | | SafeMode Firmware [[Package1|package1]] from [[Title_list#System_Data_Archives|Title 010000000000081A]] (backup) |
− | |-
| |
− | | 0x080000
| |
− | | 0x40000
| |
− | |
| |
− | |-
| |
− | | 0x0C0000
| |
− | | 0x40000
| |
− | |
| |
| |} | | |} |
| | | |
| === Keyblob === | | === Keyblob === |
− | Starting at offset 0x180000 is an array of 0x200-byte entries, for a total of 32 keyblobs. Each one is unique compared to the others and they are all console unique. | + | Starting at offset 0x180000 is an array of 0x200-byte entries, for a total of 32 keyblobs. Each one is unique compared to the others and they are all console unique. This is officially known as the "EKS" (encryption key source) area. |
| | | |
| From each 0x200-byte entry only the first 0xB0 bytes effectively form the keyblob as below. | | From each 0x200-byte entry only the first 0xB0 bytes effectively form the keyblob as below. |
Line 108: |
Line 108: |
| | | |
| [[Boot]] also uses this index for repairing corrupt sectors. | | [[Boot]] also uses this index for repairing corrupt sectors. |
| + | |
| + | The currently active keyblob is officially known as "SecureInfo". |
| | | |
| == User Partitions == | | == User Partitions == |
Line 124: |
Line 126: |
| | 20 | | | 20 |
| | No | | | No |
− | | GPT header, Bis-storage also allows raw access to the entire NAND eMMC sectors starting at sector0. The official name for this partitionID from [[SystemInitializer]] is "nn::fs::BisPartitionId::UserDataRoot". | + | | GPT header, Bis-storage also allows raw access to the entire NAND eMMC sectors starting at sector0. The official name for this partition is "UserDataRoot". |
| |- | | |- |
| | PRODINFO | | | PRODINFO |
Line 131: |
Line 133: |
| | 27 | | | 27 |
| | Yes | | | Yes |
− | | "CAL0" raw partition containing set:cal data. | + | | "CAL0" raw partition containing set:cal data. The official name for this partition is "CalibrationBinary". |
| |- | | |- |
| | PRODINFOF | | | PRODINFOF |
Line 138: |
Line 140: |
| | 28 | | | 28 |
| | Yes | | | Yes |
− | | FAT12 filesystem, additional calibration. | + | | FAT12 filesystem, additional calibration. The official name for this partition is "CalibrationFile". |
| |- | | |- |
| | BCPKG2-1-Normal-Main | | | BCPKG2-1-Normal-Main |
Line 145: |
Line 147: |
| | 21 | | | 21 |
| | No | | | No |
− | | For all these packages, data starts at offset 0x4000 and is not console-unique. This is installed from "package2" in firmware package A (0100000000000819) by default. With the exFAT update installed, this is switched to firmware package C (010000000000081B). The data stored here matches the raw /nx/package2 file stored in the 81[9AB] data archives -- there is no additional encryption. "BCPKG2" is "BootConfigAndPackage2": for example, from [[Factory_Setup|SystemInitializer]]: "BootConfigAndPackage2Part1". | + | | Raw partition where the first 0x4000 bytes (usually empty) contain the "BootConfig" and the remaining space contains the [[Package2|package2]] image from [[Title_list#System_Data_Archives|Title 0100000000000819]] by default. With the exFAT update installed, the [[Package2|package2]] image is switched to the one from [[Title_list#System_Data_Archives|Title 010000000000081B]]. The official name for this partition is "BootConfigAndPackage2Part1". |
| |- | | |- |
| | BCPKG2-2-Normal-Sub | | | BCPKG2-2-Normal-Sub |
Line 152: |
Line 154: |
| | 22 | | | 22 |
| | No | | | No |
− | | Identical to BCPKG2-1-Normal-Main, probably used as a backup partition. | + | | Backup partition for BCPKG2-1-Normal-Main. The official name for this partition is "BootConfigAndPackage2Part2". |
| |- | | |- |
| | BCPKG2-3-SafeMode-Main | | | BCPKG2-3-SafeMode-Main |
Line 159: |
Line 161: |
| | 23 | | | 23 |
| | No | | | No |
− | | This is installed from "package2" in firmware package B (010000000000081A). | + | | Raw partition where the first 0x4000 bytes (usually empty) contain the "BootConfig" and the remaining space contains the [[Package2|package2]] image from [[Title_list#System_Data_Archives|Title 010000000000081A]] by default. Starting with firmware version [[4.0.0|4.0.0]], the [[Package2|package2]] image is switched to the one from [[Title_list#System_Data_Archives|Title 010000000000081C]]. The official name for this partition is "BootConfigAndPackage2Part3". |
| |- | | |- |
| | BCPKG2-4-SafeMode-Sub | | | BCPKG2-4-SafeMode-Sub |
Line 166: |
Line 168: |
| | 24 | | | 24 |
| | No | | | No |
− | | Identical to BCPKG2-3-SafeMode-Main. | + | | Backup partition for BCPKG2-3-SafeMode-Main. The official name for this partition is "BootConfigAndPackage2Part4". |
| |- | | |- |
| | BCPKG2-5-Repair-Main | | | BCPKG2-5-Repair-Main |
Line 173: |
Line 175: |
| | 25 | | | 25 |
| | No | | | No |
− | | Installed at the factory, never written afterwards on retail. In one case this is identical to normal [[1.0.0]] pkg2, except this has encrypted data at the end padded for 0x1000-byte alignment. | + | | Installed at the factory, never written afterwards on retail. In one case this is identical to normal [[1.0.0]] [[Package2|package2]], except this has encrypted data at the end padded for 0x1000-byte alignment. The official name for this partition is "BootConfigAndPackage2Part5". |
| |- | | |- |
| | BCPKG2-6-Repair-Sub | | | BCPKG2-6-Repair-Sub |
Line 180: |
Line 182: |
| | 26 | | | 26 |
| | No | | | No |
− | | Identical to BCPKG2-5-Repair-Main. | + | | Backup partition for BCPKG2-5-Repair-Main. The official name for this partition is "BootConfigAndPackage2Part6". |
| |- | | |- |
| | SAFE | | | SAFE |
Line 187: |
Line 189: |
| | 29 | | | 29 |
| | Yes | | | Yes |
− | | FAT32 filesystem. | + | | FAT32 filesystem. The official name for this partition is "SafeMode". |
| |- | | |- |
| | SYSTEM | | | SYSTEM |
Line 194: |
Line 196: |
| | 31 and 32 | | | 31 and 32 |
| | Yes | | | Yes |
− | | FAT32 filesystem. | + | | FAT32 filesystem. The official name for this partition is "SystemProperEncryption". |
| |- | | |- |
| | USER | | | USER |
Line 208: |
Line 210: |
| | | | | |
| | No | | | No |
− | | This is the backup GPT header specified by the main GPT header. This is also the last sector readable with Bis-storage paritionID 20. | + | | This is the backup GPT header specified by the main GPT header. This is also the last sector readable with Bis-storage paritionID 20. |
| |} | | |} |
| | | |