Difference between revisions of "Partitions"

From Vita Development Wiki
Jump to navigation Jump to search
Tags: Mobile edit Mobile web edit
Line 20: Line 20:
 
| 0x24
 
| 0x24
 
| 0x4
 
| 0x4
| Size of device in blocks (ex: 0x71A000 blocks -> * 0x200 bytes per block = 0xE3400000 = 3 812 622 336 bytes = 3.81 GB)
+
| Size of device in blocks
 
|-
 
|-
 
| 0x28
 
| 0x28
Line 28: Line 28:
 
| 0x30
 
| 0x30
 
| 0x4
 
| 0x4
| Second Loader offset in blocks (ex: 0x6070 -> * 0x200 bytes per block = 0xC0E000 bytes = 12 MB from MBR start)
+
| Second Loader offset in blocks
 
|-
 
|-
 
| 0x34
 
| 0x34
 
| 0x4
 
| 0x4
| Second Loader size in blocks (ex: 0x6F -> * 0x200 bytes per block = 0xDE00 bytes = 56kB)
+
| Second Loader size in blocks
 
|-
 
|-
 
| 0x38
 
| 0x38
Line 127: Line 127:
 
{| class="wikitable"
 
{| class="wikitable"
 
! Code
 
! Code
 +
! Block Device
 
! Name
 
! Name
 
! Location Seen
 
! Location Seen
Line 132: Line 133:
 
|-
 
|-
 
| 0x0
 
| 0x0
 +
|
 
|  
 
|  
 
|  
 
|  
Line 137: Line 139:
 
|-
 
|-
 
| 0x1
 
| 0x1
 +
| "idstor"
 
|  
 
|  
 
| Internal
 
| Internal
Line 142: Line 145:
 
|-
 
|-
 
| 0x2
 
| 0x2
 +
| "sloader"
 
|  
 
|  
 
| Internal
 
| Internal
Line 147: Line 151:
 
|-
 
|-
 
| 0x3
 
| 0x3
 +
| "os"
 
| os0
 
| os0
 
| Internal
 
| Internal
Line 152: Line 157:
 
|-
 
|-
 
| 0x4
 
| 0x4
 +
| "vsh"
 
| vs0
 
| vs0
 
| Internal
 
| Internal
Line 157: Line 163:
 
|-
 
|-
 
| 0x5
 
| 0x5
 +
| "vshdata"
 
| vd0
 
| vd0
 
| Internal
 
| Internal
Line 162: Line 169:
 
|-
 
|-
 
| 0x6
 
| 0x6
 +
| "vtrm"
 
| tm0
 
| tm0
 
| Internal
 
| Internal
Line 167: Line 175:
 
|-
 
|-
 
| 0x7
 
| 0x7
 +
| "user"
 
| ur0
 
| ur0
 
| Internal
 
| Internal
Line 172: Line 181:
 
|-
 
|-
 
| 0x8
 
| 0x8
 +
| "userext"
 
| ux0
 
| ux0
| Memory Card
+
| Internal / Memory Card
 
| [[Memory Card]]
 
| [[Memory Card]]
 
|-
 
|-
 
| 0x9
 
| 0x9
 +
| "gamero"
 
| gro0
 
| gro0
 
| Game Card
 
| Game Card
Line 182: Line 193:
 
|-
 
|-
 
| 0xA
 
| 0xA
 +
| "gamerw"
 
| grw0
 
| grw0
 
| Game Card
 
| Game Card
Line 187: Line 199:
 
|-
 
|-
 
| 0xB
 
| 0xB
 +
| "updater"
 
| ud0
 
| ud0
 
| Internal
 
| Internal
Line 192: Line 205:
 
|-
 
|-
 
| 0xC
 
| 0xC
 +
| "sysdata"
 
| sa0
 
| sa0
 
| Internal
 
| Internal
Line 197: Line 211:
 
|-
 
|-
 
| 0xD
 
| 0xD
 +
| "mediaid"
 
|  
 
|  
 
| External
 
| External
Line 202: Line 217:
 
|-
 
|-
 
| 0xE
 
| 0xE
 +
| "pidata"
 
| pd0
 
| pd0
 
| Internal
 
| Internal
 
| [[Welcome Park]] and welcome video
 
| [[Welcome Park]] and welcome video
 +
|-
 +
| 0xF
 +
| "unused"
 +
|
 +
| External
 +
| Unknown
 
|}
 
|}
  

Revision as of 22:09, 31 August 2018

All devices on the Vita are partitioned the same way. Logical block size is 512 bytes and the first logical block is the master block which defines the partition table along with other information. Because of block level encryption, the master block is also encrypted along with everything else and cannot be seen if the device is dumped from an external dumper.

Master Block

The first block (512 bytes) provides a partition table as well as auxiliary information to the block management drivers.

Offset Size Information
0x0 0x20 Magic string "Sony Computer Entertainment Inc."
0x20 0x4 Version ? (0x3)
0x24 0x4 Size of device in blocks
0x28 0x8 full of zeroes - maybe padding
0x30 0x4 Second Loader offset in blocks
0x34 0x4 Second Loader size in blocks
0x38 0x4 ? (ex: 0x600)
0x3C 0x4 ? (ex: 0x400)
0x40 0x4 ? (ex: 0x600)
0x40 0x4 ? (ex: 0x10000)
0x48 0x8 full of zeroes - maybe padding
0x50 0x110 (0x11 per partition * 10 partitions) Partition entries (there are 0x10 partitions at most (derived from code and data structure of SdStor driver))
0x160 0x5E unknown (zeros)
0x1BE 0x10 unknown (may contain some data) (In standard MBR this area corresponds to Partition Entry)
0x1CE 0x10 unknown (must contain zeros) (In standard MBR this area corresponds to Partition Entry)
0x1DE 0x10 unknown (must contain zeros) (In standard MBR this area corresponds to Partition Entry)
0x1EE 0x10 unknown (must contain zeros) (In standard MBR this area corresponds to Partition Entry)
0x1FE 0x2 0xAA55 signature

Partition Entries

Each partition entry is 17 bytes long. Offset 0x0 means end of table.

Offset Size Information
0x0 0x4 Partition offset (blocks)
0x4 0x4 Partition size (blocks)
0x8 0x1 Partition code
0x9 0x1 Partition type
0xA 0x1 Partition active
0xB 0x4 Flags ? seen: 0x00000555, 0x00000F0F, 0x00000F1F, 0x00000F4F, 0x00000FFF
0xF 0x2 ?

Partition Code

The partition code uniquely identifies the partition to its function. It is related to SceKernelModulemgr#Partition Code.

Code Block Device Name Location Seen Description
0x0 empty partition
0x1 "idstor" Internal first eMMC partition, some data, IdStorage
0x2 "sloader" Internal SLB2 Boot loaders
0x3 "os" os0 Internal Main OS partition, contains kernel modules
0x4 "vsh" vs0 Internal system applications & libraries
0x5 "vshdata" vd0 Internal Registry and error history
0x6 "vtrm" tm0 Internal NpDrm, Marlin and DevKit/TestKit activations files
0x7 "user" ur0 Internal User resources, LiveArea cache, database, & other stuff
0x8 "userext" ux0 Internal / Memory Card Memory Card
0x9 "gamero" gro0 Game Card Game Card read-only area
0xA "gamerw" grw0 Game Card Game Card writable area
0xB "updater" ud0 Internal Updater application and PUP copied here before reboot
0xC "sysdata" sa0 Internal Dictionary and font data
0xD "mediaid" External Some data on Memory Card & Game Card
0xE "pidata" pd0 Internal Welcome Park and welcome video
0xF "unused" External Unknown

Partition Type

The partition type code indicates the file system used or if there is no file system (for example, in the case of a SLB2 archive).

Code Description
0x6 FAT16
0x7 exFAT
0xDA Raw data

Partition Active

Some partitions (specifically os0 and the boot loaders) have a shadow redundant copy. On update, only the inactive partition is written to and finally the active partition is swapped. For partitions that do not use this feature, this value is ignored.