[Main Page]

Resizing PS3 VFLASH Storage Device

From EurAsiaWiki

Main Page | Recent changes | View source | Page history | Log in / create account |

Printable version | Disclaimers | Privacy policy
Category: PS3

Source: graf_chokolo @ http://www.ps3devwiki.com/index.php?title=Resizing_VFLASH_Storage_Device


Contents

Introduction

I tried first to remove GameOS HDD region, then created a smaller one and used the free space to create one new HDD region for Linux. But every time i did it, OFW removed it again at the next boot and reformatted the HDD. So i decided to use VFLASH because GameOS doesn't touch it.

VFLASH is a virtual device, as the name already suggests. VFLASH is the region #1 on the HDD of PS3. By default, VFLASH is only 256 MB. And it has one free region, region #7, which is currently not used by HV or GameOS.

HV hides VFLASH HDD region from LPAR 2 and it doesn't see it.

First, i resized the VFLASH. By doing this, you will loose your data on HDD but NOT on VFLASH !!! VFLASH data remains untouched. Resizing VFLASH doesn't cause corruption of data already installed there !!! So backup your GameOS data from UFS2 partition before you will do it.

After resizing VFLASH, GameOS will reformat the HDD again but with a little difference :-) It will have less HDD space now because i made VFLASH larger.

First step is to dump the partition table of HDD. Second step is to remove GameOS partitions. Then resize VFLASH by modifying the partition table and writing it back to HDD. The last step is creating new VFLASH region.

I did all these steps from a Linux with my kernel booted by BootOS but it's not necessary and can be easily done from GameOS itself. I implemented my dual boot on 3.41 PS3 from GameOS before SONY took it away.

I made VFLASH about 40GB large but you can make it even larger if you want to.

Advantages Of Installing Linux on VFLASH

Dumping HDD Partition Table

# dd if=/dev/ps3da of=partition_table_old.bin bs=512 count=2

Example Of An Unmodified HDD Partition Table

alex@gentoo ~ $ hexdump -C partition_table_old.bin 
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 0f ac e0 ff  00 00 00 00 de ad fa ce  |................|
00000020  00 00 00 00 00 00 00 03  00 00 00 00 00 00 00 02  |................|
00000030  00 00 00 00 00 00 00 08  00 00 00 00 00 08 00 00  |................|
00000040  10 70 00 00 01 00 00 01  00 00 00 00 00 00 00 0b  |.p..............|
00000050  10 70 00 00 02 00 00 01  00 00 00 00 00 00 00 03  |.p..............|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000000c0  00 00 00 00 00 08 00 10  00 00 00 00 17 01 f1 a0  |................|
000000d0  10 70 00 00 01 00 00 01  00 00 00 00 00 00 00 03  |.p..............|
000000e0  10 70 00 00 02 00 00 01  00 00 00 00 00 00 00 03  |.p..............|
000000f0  10 20 00 00 03 00 00 01  00 00 00 00 00 00 00 03  |. ..............|
00000100  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000150  00 00 00 00 17 09 f1 b8  00 00 00 00 00 3f ff f8  |.............?..|
00000160  10 70 00 00 01 00 00 01  00 00 00 00 00 00 00 03  |.p..............|
00000170  10 70 00 00 02 00 00 01  00 00 00 00 00 00 00 03  |.p..............|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400

Here you can see a HDD partition table from the HDD of a PS3 slim. It has 3 regions: VFLASH and 2 GameOS regions.

The VFLASH region starts at sector 0x8 and is of size 0x80000 sectors. Each sector is 512 bytes. So, VFLASH is 256 MB large.

You can also see the ACL list of every HDD region. E.g. VFLASH can be accessed by LPAR auth id 0x1070000001000001 (LPAR 1 or HV processes) and 0x1070000002000001 (LPAR 2 or GameOS). This list can be manipulated by HV calls 252 and 253 or with my ps3stor-utils and ps3stormgr Linux kernel module.

Removing GameOS Partitions From HDD

There are actually 2 methods i used to do these. First method is to modify the HDD partition table directly. The second method is to use my PS3 Linux kernel and ps3stormgr kernel module. Actually this step can be skipped.

1. Method

2. Method

# ps3stor_region /dev/ps3stormgr delete 3 3
# ps3stor_region /dev/ps3stormgr delete 3 2 # removes UFS2 region

Patching HDD Partition Table

Example Of A Patched HDD Partition Table With Resized VFLASH Region

alex@gentoo ~ $ hexdump -C part_table_patched.bin 
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 0f ac e0 ff  00 00 00 00 de ad fa ce  |................|
00000020  00 00 00 00 00 00 00 03  00 00 00 00 00 00 00 02  |................|
00000030  00 00 00 00 00 00 00 08  00 00 00 00 04 08 00 00  |................|
00000040  10 70 00 00 01 00 00 01  00 00 00 00 00 00 00 0b  |.p..............|
00000050  10 70 00 00 02 00 00 01  00 00 00 00 00 00 00 03  |.p..............|
00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000400

Here you can see an example of a patched HDD partition table with resized VFLASH region and removed GameOS regions.

I set sector count of VFLASH region to 0x4080000 sectors.

Of course you shouldn't use here sector count larger than your HDD allows :-)

Writing Patched HDD Partition Table to HDD

# dd if=part_table_patched.bin of=/dev/ps3da bs=512 count=2
# sync

Now reboot to GameOS and it should start formatting your HDD again. But now it won't use the space we reserved for VFLASH :-)

Adding New VFLASH Region

# ps3stor_region /dev/ps3stormgr create 4 0x80000 0x4000000 0x1070000002000001

You can of course use another value for sector count. But it shouldn't be larger than the free space you added to VFLASH of course :-)

Retrieved from "http://www.eurasia.nu/wiki/index.php/Resizing_PS3_VFLASH_Storage_Device"

This page has been accessed 1,216 times. This page was last modified 05:58, 1 April 2011.