Flash Filesystem: Difference between revisions

m left padding is hard
Note on encryption
Line 116: Line 116:
!  Size
!  Size
!  [[Filesystem_services|Bis]] Partition ID
!  [[Filesystem_services|Bis]] Partition ID
!  Encrypted
!  Description
!  Description
|-
|-
Line 122: Line 123:
|   
|   
|  20
|  20
|  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 partitionID from [[SystemInitializer]] is "nn::fs::BisPartitionId::UserDataRoot".
|-
|-
Line 128: Line 130:
|  0x003FBC00
|  0x003FBC00
|  27
|  27
|  Yes
|  "CAL0" raw partition containing set:cal data.
|  "CAL0" raw partition containing set:cal data.
|-
|-
Line 134: Line 137:
|  0x00400000
|  0x00400000
|  28
|  28
|  Yes
|  FAT12 filesystem, additional calibration.
|  FAT12 filesystem, additional calibration.
|-
|-
Line 140: Line 144:
|  0x00800000
|  0x00800000
|  21
|  21
|  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".
|  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".
|-
|-
Line 146: Line 151:
|  0x00800000
|  0x00800000
|  22
|  22
|  No
|  Identical to BCPKG2-1-Normal-Main, probably used as a backup partition.
|  Identical to BCPKG2-1-Normal-Main, probably used as a backup partition.
|-
|-
Line 152: Line 158:
|  0x00800000
|  0x00800000
|  23
|  23
|  No
|  This is installed from "package2" in firmware package B (010000000000081A).
|  This is installed from "package2" in firmware package B (010000000000081A).
|-
|-
Line 158: Line 165:
|  0x00800000
|  0x00800000
|  24
|  24
|  No
|  Identical to BCPKG2-3-SafeMode-Main.
|  Identical to BCPKG2-3-SafeMode-Main.
|-
|-
Line 164: Line 172:
|  0x00800000
|  0x00800000
|  25
|  25
|  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]] pkg2, except this has encrypted data at the end padded for 0x1000-byte alignment.
|-
|-
Line 170: Line 179:
|  0x00800000
|  0x00800000
|  26
|  26
|  No
|  Identical to BCPKG2-5-Repair-Main.
|  Identical to BCPKG2-5-Repair-Main.
|-
|-
Line 176: Line 186:
|  0x04000000
|  0x04000000
|  29
|  29
|  Yes
|  FAT32 filesystem.
|  FAT32 filesystem.
|-
|-
Line 181: Line 192:
|  0x07800000  
|  0x07800000  
|  0xA0000000
|  0xA0000000
|  31 (and 32?)
|  31 and 32
|  Yes
|  FAT32 filesystem.
|  FAT32 filesystem.
|-
|-
Line 188: Line 200:
|  0x680000000
|  0x680000000
|  30
|  30
|  Yes
|  FAT32 filesystem.
|  FAT32 filesystem.
|-
|-
Line 194: Line 207:
| 0x200
| 0x200
|  
|  
|  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.
|}
|}
Line 202: Line 216:


The filenames for saveimages is just "<lower-case hex u64 saveID>". SYSTEM-partition saveIDs are specified by [[Filesystem_services|FS]] commands, while USER-partition saveIDs are determined by FS-module internally. The high u32 of the saveID is normally either 0x00000000 or 0x80000000.
The filenames for saveimages is just "<lower-case hex u64 saveID>". SYSTEM-partition saveIDs are specified by [[Filesystem_services|FS]] commands, while USER-partition saveIDs are determined by FS-module internally. The high u32 of the saveID is normally either 0x00000000 or 0x80000000.
Encrypted partitions use AES-XTS using the same non-standard (endian-swapped) tweak as other Nintendo AES-XTS code, initial_sector == 0, and sector size 0x4000. All encrypted partitions use console unique keydata.


=== PRODINFOF ===
=== PRODINFOF ===