Partitions

From Vita Dev Wiki
Jump to navigation Jump to search

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[edit]

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 0x28 ?
0x50 0x11 - 0x110 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[edit]

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: 0x00000F1F, 0x00000F0F, 0x00000FFF, 0x??????55, 0x00000F4F
0xF 0x2 ?

Partition Code[edit]

The partition code uniquely identifies the partition to its function.

It is related to SceKernelModulemgr#Partition Code but the meaning of the code is still unknown.

Partition Type[edit]

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[edit]

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.

Default Partitions[edit]

Name PartitionSize Code Type Physical Description
0x0 raw EMMC empty partition
0x1 raw EMMC first eMMC partition, some data IdStorage?
0x2 raw EMMC SLB2 Boot loaders
os0 15.96MB 0x3 FAT16 EMMC The “main” OS files. Includes all the kernel libraries and the most important user libraries. There is always two copies of this for redundancy and updating will only update the inactive partition and the active flag is swapped.
pd0 303.91 MB 0xE exFAT EMMC Welcome Park and Intro Video. It is also the “preinst” PUP update.
sa0 95.95 MB 0xC FAT16 EMMC The “bulky” data like fonts and handwriting information. Why is it a separate partition? Because it makes updates smaller. Your “systemdata” PUP provides the update for this partition.
sd0 FAT16 Unique to DEVKITs? (Needs confirmation on this). Used for sdcard storage (updates).
tm0 31.95 MB 0x6 FAT16 EMMC eMMC-NAND npdrm partition.
ud0 255.91 MB 0xB FAT16 EMMC When you update the Vita, the update file is copied here and the system reboots.
ur0 2.52 or 2.55 GB 0x7 exFAT EMMC NAND is the remaining user data that is structured similarly to the memory card (it shares almost the same directory structure). App icon layout for example is found here.
ux0 varies 0x8 exFAT Memory_Card User Storage, commonly used for homebrew
vd0 31.95 MB 0x5 FAT16 EMMC Registry and error history
vs0 255.73 MB 0x4 FAT16 EMMC Rest of the OS including all the system apps, the main shell, and the remaining user libraries.
gro0 varies 0x9 Game_Card Read-Only partition of the Game Card
grw0 varies 0xA Game_Card Read-Write partition of the game card if supported (for storing save games, patches and DLC of the game to cartridge).