目前使用UFS存储芯片的机型分区表gpt.bin是否还有版本区别?

上段链接的帖子提到gpt.bin偏移量为0x6FFC处的值就是分区表的版本/等级。我随便下载了一个老机型的固件(XT1575_CLARK_RETUS_6.0_MPH24.49-18…, 2015)并解包,发现它的gpt.bin版本字段应该符合该帖子的描述:

它的开头看起来是比较标准的GPT分区表,头512字节(LBA 0)是protective MBR,从LBA 1到13是GPT分区表,随后都用0填充,直到0x6400 (LBA 50)开始填充0xFF,一直持续到0x6FFB (位于LBA 55末端)。0x6FFC的值为0x01。从0x7000 (LBA 56)开始的内容应为某种签名


然而目前固件包中gpt.bin的格式已不再是eMMC时代的样子。以 XT2301-5_RTWO_RETCN_13_T1TR33.4-30-77… 为例,它的gpt.bin开头是一串magic string SINGLE_N_LONELY,查询可知它是一种tar风格的打包格式。使用工具解包可以看到gpt_main0.bin到gpt_main5.bin共6个GPT分区表文件。
格式介绍及工具:hxxps://github.com/HemanthJabalpuri/star

这样的变化是使用UFS造成的,因为它有多个LUN。这时的分区表长啥样可以参见[xda上的一台Moto G52] (hxxps://xdaforums.com/t/info-my-moto-g52.4533867/post-87912481)(手机上可以使用sgdisk工具查看)

用16进制编辑器打开moto x40的gpt_main0.bin,可以看到前512字节仍然是protective MBR。然而GPT头则是开始于0x1000 (4096字节处),这可能是block size变为4kB造成的。往下可以看到最后一个分区名叫last_parti0,另外几个分区表文件里这个末尾的数字也与文件名中的数字相同(一些其他厂商的高通机型会叫最后一个分区last_parti)。继续往下到0x6FE0可以看到两行共32字节的文本

PROD:rtwo
CSV:0

再往下疑似是一段签名
![新用户只能插一张图]

这里的CSV字段看起来十分像是版本号,因为在RETEU T1TR33.43-20-56以及RETUS T1TRS33.43-48-41-3里相同的地方都是

PROD:rtwo
CSV:8

不过我用着reteu的BL在fastboot刷retcn的gpt.bin并未报错(怕砖没敢重启,刷回reteu的gpt.bin了),这是否说明已经解锁的BL不会检查这个分区表版本字段?还是说目前降级限制是由别处的参数实现的?

GPT 验证目前来说已经弱化很多了。现代机型,要校验 bootloader 相关分区的版本。还有系统的 vbmeta 版本。