Edit: and it also works on the final Android O.
But let's not rush into things.. First of all a DISCLAIMER:
This is a TEST release, you are using it at your own risk. If your phone gets damaged in any way, nobody else but you can be held responsible. If you do not agree, stop reading and don't use this mod!
I would like to give credits to the people who helped me, and made all this possible:
First of all, @Chainfire, who did more then you would think Among other things, he was the one who showed me how to use tune2fs and reset quotas on /data, which makes it possible to mount it. Without this , I couldn't even start. So thank you very much!
Of course where would we be without @Dees_Troy and the other TWRP guys (i.e.: CaptainThrowback, nkk71, steadfasterX, _that...), who created and maintain TWRP, and demonstrated some serious patience on IRC , where I was asking them for help. For days. For weeks Thank you guys! You helped a lot!
What is this "mod"?
This is stock, normal TWRP 3.1 compiled from source, for the Google Pixel (sailfish) with some small tweaks to make it possible to mount /data, and decrypt it.
Can you use it on the Pixel XL (marlin)?
I don't know... I don't have a Pixel XL to test. If you want, you can buy me one and I'll be glad to compile, prepare, and test it for you.
EDIT: Chainfire "tested a few zip installs" and those were working for him on the Pixel XL, so maybe it is worth a try guys! - thanks for this CF! -
What happens behind the curtains?
I made some modifications to a script that prepared stuff to make the decryption of /data possible. Now it does a bit more... It copies libraries and binaries from /system and /vendor partitions to /system and /vendor folders, so they can be un-mounted (needed for backup). Basically, the recovery uses the real files/commands of the currently installed android os to prepare and mount /data partition (to make it ready for decrypting).
I updated the fstab file, so TWRP knows what to mount where.
I also changed a few things in the order how services are started during TWRP boot.
This is mostly everything. I was only changing external parts/files/tools of TWRP. The original code, the core is left intact.
How well was it tested?
I have only 1 phone, the pixel. I have only tested on this one phone, and it works for me. Of course I can't be certain it will for you, but you will see if you try it
I tested decrypting of /data, flashing a zip file, making a backup. Didn't dare to test restore yet :P
How can you try it?
This is not a flashable zip, this is a bootable image. So to use it, you have to put the phone into fastboot mode, and fastboot boot the image.
1. reboot the phone into fastboot mode
- if you have adb: adb reboot bootloader
- if you don't, then turn off the phone and press volume down while turning it on
2. open a terminal and issue the following command:
fastboot boot <path to your twrp image here>
What about a flashable zip?
I had some quick test runs only for now, and it was working for me (flashing the zip, rebooting to recovery) until I flashed supersu, or rebooted the phone to android. I will need some more time to work on this, and see what is going wrong. So please be patient, I will try to do something, but can't guarantee it will work. Soon. Anytime.
Enough of the talk, you can download the image file from here:
Good luck and don't forget to report back!
I will try to do my best to help you, but I have a family and I inted to spend most of my time with them. Please be patient!
If you like my work, you can buy me a beer, it is damn hot here right now, and I would love to drink one
Edit: Because I'm a noob and couldn't push my changes to the gerrits, I created a diff file with all my changes.
If you are checking it, please take into account, that I was in a hurry, and there was a point where I said "F*** it!" and I copied ALL the libs and bins from /system and /vendor
Anyway, here it is : https://www.androidfilehost.com/?fid=817550096634795329