问:为什么A9的TWRP与此前htc手机用的TWRP有所不同呢?
答:htc在A9(包括此前的M9)上采取了block-based(基于分区)的OTA系统,这会导致哪怕是像以前经常做的,用TWRP挂载system为可写的做法都会导致以后OTA系统升级失败。对system分区的任何改变同样如此,会显示“unexpected contents”,哪怕把检查从OTA升级包里面去除掉也不行。
问:目前A9的哪个TWRP版本是好用的?
答:在A9的TWRP recovery正式版发布之前,目前最新的beta版(2.8.7.0_CPTB-B9)是最好用的版本。
问:为什么现在A9的TWRP里面,备份系统时有“System”备份和“System Image”备份两个选项?
答:“System”备份选项是标准的tar备份方式。只有“System Image”备份选项不会改变系统,它可以做一个完整官方的备份,用它来恢复系统后就可以继续做OTA系统升级。(注:备份时还应该包括内核boot,另外如前1所叙述,system imge备份前,TWRP只能用只读read-only模式挂载system进入,且必须在有任何影响到system分区的操作之前做官方系统备份,否则就仍然不是可以拿来做OTA升级的官方备份。)
问:如何在A9上做root?
答:A9有dm-verity文件系统保护,默认被加密。root只能采取新的非系统root方式。下面有两种可以:
1)seSuperuser (需要刷一个ZIP文件和安装一个来自Play商店的app)
2)SuperSU (通常做的刷SuperSU包来root的方式,会让加密和dm-verity自动无效,但必须事先在TWRP里面做“Format Data”,也叫“Wipe Data”。注意这样会丢失用户数据。)(注意:如果用SuperSU来取得root权限的,如果不做格式化data,重启后手机会进入要求输入解锁码的界面)
问:内置存储被加密,TWRP不能解密和识别它时,如何来刷入任何东西呢?
答:可以在TWRP里面做格式化data来取消加密,就不用操心这个加密的事情了。也可刷入修改过的A9 boot内核来取消加密和dm-verity保护。如果你刷入的只是修改system的ZIP包,那么就不用管内置存储被加密的事情。(备注:格式化data会丢失自己的用户数据,所以做之前必须备份好自己的数据)
问:有可能在TWRP里面做一份保留加密的data备份吗?
答:不可能。TWRP目前不能在A9上解密data。这是由于htc用的是来自Mocana的专利加密技术。在有人解决这个问题之前,TWRP唯一能访问data分区的方法就是用格式化data的选项,其原理就是格式化data时会清除虚拟内存里面的那个强制加密位,从而来达到取消解密的效果。
问:那么,有没有办法进行不破坏以后OTA系统升级的root过程呢?
答:没有办法。root之后就不能OTA系统升级。但是,在root之前,你可以用TWRP做一个system没有被加载为写或被修改的system image备份。用它可以来把手机恢复到官方的系统状态以后,就可以做OTA系统升级了。
问:在刷入TWRP recovery之前,如何从手机中备份出一个官方的recovery呢?
答:你不能。在A9的ABOOT上,fastboot boot指令被禁止了。因此TWRP必须在官方recovery之上做fastboot的刷入。有一个办法可以得到,那就是OTA升级包,它里面包含firmware固件的zip文件,可以解压缩并从里面提取到官方的recovery.img文件。在官方系统(system+boot)被恢复之后,再用这个提取到的文件来刷入恢复到官方recovery,从而就可以做OTA官方系统升级了。
问:当接收到OTA系统升级时,如何来恢复官方的系统呢?
答:1)在TWRP的Mount(挂载)菜单中检查确定“Mount sytem as read-only”被打勾,即系统以只读方式挂载。
2)用“System Image”备份来恢复到官方系统(必须事先已经做过没有被任何改动的system image备份才行)。补充:同时还应该恢复内核boot。
3)刷入官方的recovery(手机在download模式下,接数据线在电脑上用命令行:
fastboot flash recovery recovery.img)
4)重启系统,做OTA系统升级。
标注:第3步中也可以通过TWRP.GUI方式来恢复官方recovery。修改官方recovery文件名为“recovery.emmc.win”,然后拷贝到官方系统备份image的那个目录里面。恢复系统的时候,就会有recovery选项可以选择为恢复项了。要确定你想这么做,因为这么做以后TWRP recovery将会被官方recovery覆盖掉。
问:如果有RUU呢?还要操心这些个OTA系统升级问题吗?
答:如果不担心你自己的数据会丢失,那么就不用操心,因为RUU会清除手机所有的数据。 如果手机是s-on那么ruu必须对应自己的手机版本(model ID和CID必须匹配)、且ruu的版本号和手机里面的版本号相同或者更新才行。然后你就能通过刷入ruu来恢复到完整的官方状态。无论如何,如果你希望用OTA升级方式来保留你自己的数据,上面问答9已经叙述过方法了。或者你是刷的别人定制的ROM,那就等待别人更新定制ROM到最新版(如果你的手机不是S-OFF的,你还是有必要想办法去更新一下手机的固件firmware)。
问:如果都通过了这些操作,并成功地做了OTA系统升级,面对新的官方系统,如何做新的系统备份呢?
答:OTA系统升级后,刷入TWRP recovery,将会再次检测到一个未被改过(加载为写和被修改)的系统system。在TWRP里面选择用read-only只读模式加载系统system后进入,就可以使你做一个完整的官方系统备份(System Image,补充:还应包括boot),从而让你有一个纯净的系统新起点,然后在这个新的基础上重复上述过程即可。
【总结出几条重要的信息】
1、A9的OTA升级检查是基于分区方式,任何官方系统的分区(常用的指system系统、data数据、boot内核等)被影响过,则OTA升级时的检查不能通过。
2、官方系统的system分区被挂载为可读写的操作哪怕一次,也不能被称为是纯净的官方系统,则OTA升级时的检查不能通过。
3、格式化data分区(wipe data)后,也不再是纯净的官方系统,则OTA升级时的检查不能通过。
4、官方系统被root过以后,肯定不是纯净的官方系统了,则OTA升级时的检查不能通过。
5、想用TWRP备份出纯净官方系统的,进入TWRP时必须选择Keep Read Only(挂载system分区为只读模式),且只能备份出system image和boot。
6、纯净的官方系统下,TWRP目前还无法解密data分区(用户数据区)。因此想用TWRP备份出它的data分区是不可能的,只能用其它途径来备份自己的数据。
7、data分区被系统强制加密的情况下,TWRP目前还无法挂载识别data分区。TWRP只能通过格式化data分区(wipe data)的方式来取消它的加密后,才能对data分区进行挂载读写,这会丢失用户数据。
8、在data分区还是被加密的情况下刷SuperSU来取得root权限时,必须先做格式化data分区(wipe data)操作(这会丢失用户数据),否则开机后被要求输入解锁码而无法进入系统。
9、通过刷SuperSU做了系统的root权限以后,此系统下的data分区的加密就不再有效(但刷SuperSU时必须注意第8点)。
10、可以通过TWRP做一个纯净官方系统的只读备份(只可能含system image和boot),用它来恢复系统(最后再恢复到官方recovery)后就能继续进行OTA系统升级。