[OnePlus 7 & 7 Pro Cross Device Development] Zackptg5:
If you want to make something like this for your device, check out this guide here

Since I no longer have an OP 7 series device, this mod is now deprecated and won't be receiving any more updates. [MENTION=10348517]invernomut0[/MENTION] has made a continuation of this mod using orangefox recovery. Check it out here!

Team Win Recovery Project 3.x, or twrp3 for short, is a custom recovery built with ease of use and customization in mind. Its a fully touch driven user interface no more volume rocker or power buttons to mash. The GUI is also fully XML driven and completely theme-able. You can change just about every aspect of the look and feel.

#include <std_disclaimer.h>
/*
*
* We are not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at us for messing up your device, we will laugh at you.
*
*/

Compatibility

This has only been tested by me on Oxygen OS Stable - Android Q.

Disclaimer

This is a DANGEROUS mod. Anything involving repartitioning is. If you fail to read and bad things happen, that's on you. Although I thoroughly tested this (managed to brick my phone once), there's always the possibility that something could go wrong with the worst case scenario resulting in a brick.

YOU'VE BEEN WARNED - Use at your own risk

What is this?

This is [MENTION=4712355]mauronofrio[/MENTION]'s TWRP (see official thread here) that's been modified for true dual booting by splitting userdata into a/b slots (also does the same for metadata for encryption support). The installer script repartitions userdata for dualboot or stock based on your input.

Limitations

See the section in the github readme. MAKE SURE YOU READ THIS!

Features:

Same as mauronofrio's TWRP

Can choose between stock layout, a/b userdata, or a/b/c userdata where 'c' is a common data partition that'll show up in both roms - it's quite handy

Option to choose between ext4 and f2fs

Disables verity - fstabs are modified for dual boot and so this is a must unless you choose stock layout in which case it's optional

Option to disable forced encryption

Option to install magisk

Common Data

I recommend the a/b/c layout which includes this common data partition

If you choose a/b/c layout - you'll have a/b userdata, but you'll also get a 3rd userdata partition I call 'Common Data'

The name 'Common Data' gives away its purpose - to store files that you'll access on both slots/roms. So stuff like zips, pictures, music, TWRP backups, etc.

In TWRP, this shows up as another storage option for backup/restore and on your pc as well - your phone will have 'Common Storage' and 'Internal Storage'

In order to be accessible when booted, some parts of the system are modified so that the it'll be accessible WITHOUT root by the following mechanisms:

- The common data partition is mounted to /sdcard/CommonData

- .nomedia file is placed in CommonData so files in it won't be picked up twice if you decide to mount over internal storage as outlined below

- Furthermore, if your use case is like mine where my music files are in common data, you can make 'mounts.txt' file in /datacommon containing a list of every FOLDER to mount directly over top of sdcard. So for example:

/datacommon/Music -> /sdcard/Music

+ This of course mounts over anything there (overwrites it for as long as it's mounted) so make sure that you don't have the same folder in both datacommon and regular data

+ Note that there are 3 exceptions to this folder mounting rule:

1) All - if this is the FIRST line, ALL folders in datacommon will be mounted

2 )Android

3) lost+found

+ The reasoning should be obvious - lost+found isn't something you should need to mess with and Android is for regular data partition only - that's OS specific and should be on separate slots

+ Note that you should have 1 folder listed on every line, for example:

DCIM
Music
Pictures
ViPER4AndroidFX

Flashing Instructions

You MUST be booted into TWRP already when flashing this zip. You can grab a bootable twrp img from here

Since this modifies data - the zip CANNOT be on sdcard or data at all UNLESS you do not want to repartition/format

- If you flash from data, the zip will copy itself to /tmp and instruct you to flash it from there OR you can just install twrp/magisk/disver-fec

- You could do the above or copy it to a place like /dev or /tmp and flash it from there

- Alternatively, you can adb sideload it

Read through ALL the prompts - there's lots of options :)

Note that if you change partition layout, THIS WILL WIPE ALL DATA INCLUDING INTERNAL STORAGE

How to Flash Roms - If you're NOT stock layout

Nothing changes here except ONLY FLASH IN TWRP

- Roms always flash to the opposite slot. Keep that in mind and you'll be fine

- So don't take an OTA while booted - boot into twrp, switch slots, reboot into twrp, flash rom

Normal flash procedure:

1) Boot into twrp

2) reboot into twrp selecting slot you do NOT want rom installed to

3) Flash rom

4) Flash this zip

5) Reboot into twrp

6) Flash everything else

Help! I Can't Boot!

Usually this is because you switched roms without formatting data first. This should be flashing 101 but we all forget sometimes. Plus this slot stuff can get confusing

If it only happens with a/b/c and not any other layout, there's a good chance it's selinux related. Try setting selinux to permissive at kernel level with this mod(source here). If this doesn't fix it, it could be because selinux can't be set to enforcing even with the mod depending on the rom

How to Manually Repartition Back to Stock

In the event any step in the repartioning fails, the entire installer aborts. The good news is that this prevents a potential brick. The bad is that you need to manually revert back. See the README on github for the procedure. Note that if the install went fine and you want to switch back to stock later, just flash the installer again and choose stock layout

Download

Source Code

Credits

Mauronofrio

Teamwin

CosmicDan

TopJohnWu