@Berion you expected these issues, not because you miss the APA journal, but because your __empty partitions don't follow the APA scheme. Basically __empty partition - it is just a normal APA partition and must follow all the APA limitations and standards. In our mixed scheme, only __jail partition can be hacked a bit (and only whole size and partition type).
There is no easy way for creating proper __empty partitions. I advise doing the following when you want to move __jail somewhere:
(You can use pfsshell, but for safety, I advise to use wlaunchelf):
1) Remove __jail partition
2) Create 1 partition (like +TEMP) with the size of the required __empty partition.
2a) I am not sure that you will trap exactly where you want - it will be safer to create tons of 128Mb partitions until you fill your size. Why? Cause big APA partition can become fragmented (yes APA also has fragmentation), and will fill more space on the disk.
3) Create __jail partition of size 128Mb (it is safer to make it as small as possible, so fewer changes will be made). The __jail partition must be the last partition on the HDD.
4) Remove partition from step 2 (or partition set from step 2a). It is basically what we need: it will create a proper __empty partition set.
4a) For safety it will be useful to run HDD checker at this step, just to ensure that everything is ok.
5) Now it is the time for HEX editing, you can modify __jail partition attributes (enormous size and partition type).
Now returning to the GPT side. As you proved - we cannot move the GPT header from sector 1 to sector 2 (it's a shame, btw). This will produce a whole bunch of problems: first, we should check the __mbr APA header checksum each time we connect HDD to pc. Even simple partition renaming or size change will lead to a corrupted checksum.
Next: you faced a problem that GParted is wiping APA journal. This can be fixed if you limit the partition count by 12:
just change
to
I realized that sector 6 and sector 7 are also in use by APA (they are for storing APA smart attributes). So in fact we have only 3-4 sectors for the GPT partition table.
Not sure if GParted will not wipe the rest sectors "just in case". Seems like these utilities use a lot of hardcoded values, but I hope that I am wrong.
Don't forget that the GPT header has checksums inside, when you hex edit it, it is better to fix checksums (i am not familiar with GParted - hope that this utility has such an option). You can fix the APA checksum only after the GPT checksum is fixed.
After everything is set up, you can test if it is possible to create new partitions. It is still possible that wlaunchelf will destroy __jail, cause it is hacked, but I really hope that nothing bad will happen.
Edit:
I also added some notes about why originally system partitions have so big sizes:
Code:
__mbr 128Mb
__net 128Mb
__system 256Mb
__sysconf 512Mb
__common 1024Mb
this was made to avoid APA fragmentation and avoid subpartition creation. It is better for the partition to start from the multiplication of their size. For example __system has a size 256Mb, so it should start from the offset that is the multiplication of 256Mb.
So how sony thought. For 40Gb disk maximum partition size when it is possible to get rid of subpartitions: 1Gb. As they in the very beginning choose __common partition for storing game data, game saves, and probably something else, they choose for __common maximum possible size which will not lead to fragmentation and sub partitioning (1Gb). And again, to get rid of fragmentation and subpartitions, __common should start from the offset that is the multiplication of 1Gb (the minimum possible will be 1Gb). So they firstly create __common and then filled free 1Gb space with the rest of the partitions.
Basically, any change in partition sizes will lead to __common fragmentation.
Code:
__mbr 128Mb
__net 128Mb
__system 128Mb
__sysconf 128Mb
lead to the fact that __common cannot be larger than 512Mb, cause it will become fragmented. And also it cannot be less than 512Mb, cause the next partition in the chain can become fragmented (for example BB Navigator needs __content partition to be next in the chain).
Here I mix subpartitions and fragmentation, this is not the same: Partition can consist of subpartitions but it will not be really fragmented.