[SCRIPT][Android 10+] Universal MakeSystemRW Mount SystemRW / SuperRW featuring MakeRW (read/write)

Search This thread

TheGhost1951

Senior Member
Feb 11, 2009
913
190
Garfield
OnePlus 9 Pro
Managed to change script elseif to support api31/android12 but it is generating super_fixed.bin instead of an img file. Renamed from .bin to .img (I don't know if this is correct or not) Flashing super from odin gives boot loops. Also, the size of fixes bin is 1/5th of the original bin file generated by script.

Please help. Pulling my hair over it.
Haven't heard much success for A12. Super_fixed.bin changed to .img, not sure what affect that would have on the flashing..... Lebigmac is working on a new version for A12.
 

lebigmac

Account currently disabled
Jan 31, 2017
1,206
813
hey guys, modified the rw zip a bit to support android 12, worked for me on my Moto G Stylus 5G that shipped with 12, everything in super is full rw. I just ran the zip from twrp 1 time and all was good. I can confirm that my stock super was def erofs
Hi. All you did was disable the checkSDK() function in the script file? You didn't mess with the binaries right? I don't feel like double checking right now.
Are you sure your partitions were in EROFS file system format? My old systemrw_1.32 script only works on EXT4 partitions...

It's actually very easy to make EROFS devices rw. This Yuki guy already figured it out in his thread that looks awkwardly close to mine...
All we must do is convert all subpartitions of super from EROFS to EXT4 file system format. Sounds easy right?
Well this Yuki guy is using a tool called make_ext4fs to do the job. I can include that in my script too no problem but the question is where to get those context files for each subpartition of super so that we can plug those into make_ext4fs tool at run time? :unsure:
 
Last edited:
Hi. All you did was disable the checkSDK() function in the script file? You didn't mess with the binaries right? I don't feel like double checking right now.
Are you sure your partitions were in EROFS file system format? My old systemrw_1.32 script only works on EXT4 partitions...

It's actually very easy to make my old script work for newer EROFS devices. This Yuki guy already figured it out in his thread that looks awkwardly close to mine...
All we must do is create new empty ext4 img files for each subpartition of super.img and transfer over all the files and then repack the super.img anf then flash to device. Sounds easy right?
Well this Yuki guy is using a tool called make_ext4 to do the job. I can include that in my script too no problem but the question is where to get those context files for each subpartition of super so that we can plug those into make_ext4 tool at run time? :unsure:
yessir, just diabled the sdk check. the zip said it was erofs so i didn't question it
 
  • Like
Reactions: lebigmac

lebigmac

Account currently disabled
Jan 31, 2017
1,206
813
yessir, just diabled the sdk check.
Ok thanks I will add it to front page. It seems my old script still works on some A12 devices that only got the shared_blocks read-only feature but I definitely need to tweak it some more to increase compatibility with newer devices...

the zip said it was erofs so i didn't question it
Can you please show me your mount output? Thanks. That should tell us if your device is using EROFS or not
 

gursewak.10

Senior Member
Sep 16, 2013
448
233
punjab
Xiaomi Mi 11 Ultra
  • To free up space and keep script as well as r/w capability you can simply delete /img subfolder at /data/local/tmp/systemrw_1.32/img
  • To delete script and keep r/w capability you can simply delete whole script folder at /data/local/tmp/systemrw_1.32
hi,
is there any need to keep script if it keeps r/w capability?
and how to get info to max extra size from lpdump.txt file
 

Attachments

  • lpdump.txt
    1.6 KB · Views: 12
Ok thanks I will add it to front page. It seems my old script still works on some A12 devices that only got the shared_blocks read-only feature but I definitely need to tweak it some more to increase compatibility with newer devices...


Can you please show me your mount output? Thanks. That should tell us if your device is using EROFS or not
this what you're looking for?

/dev/block/sde9 on /metadata type ext4 (rw,seclabel,nosuid,nodev,noatime,discard,data=ordered)
/dev/block/dm-3 on /system_ext type ext4 (ro,seclabel,relatime,discard)
/dev/block/dm-0 on /product type ext4 (ro,seclabel,relatime,discard)
/dev/block/dm-4 on /vendor type ext4 (ro,seclabel,relatime,discard)

I guess it appears my device isn't erofs ? Guess I just got lucky...
 

Mr Hassan

Account currently disabled
Feb 14, 2016
935
57
OnePlus 10 Pro
Hi. All you did was disable the checkSDK() function in the script file? You didn't mess with the binaries right? I don't feel like double checking right now.
Are you sure your partitions were in EROFS file system format? My old systemrw_1.32 script only works on EXT4 partitions...

It's actually very easy to make EROFS devices rw. This Yuki guy already figured it out in his thread that looks awkwardly close to mine...
All we must do is convert all subpartitions of super from EROFS to EXT4 file system format. Sounds easy right?
Well this Yuki guy is using a tool called make_ext4fs to do the job. I can include that in my script too no problem but the question is where to get those context files for each subpartition of super so that we can plug those into make_ext4fs tool at run time? :unsure:
How can u say its very easy make erofs rw😒
I even converted and get rw,selctable
But not working rw in device
Maybe need some super command to get rw in device
And we're waiting for your script
And plz make sure your script allow us to Choose to make whole super_fixed
Or just all separate files.
Becoz i want flash separate file to flash
It'll working not whole super
 

Mr Hassan

Account currently disabled
Feb 14, 2016
935
57
OnePlus 10 Pro
this what you're looking for?

/dev/block/sde9 on /metadata type ext4 (rw,seclabel,nosuid,nodev,noatime,discard,data=ordered)
/dev/block/dm-3 on /system_ext type ext4 (ro,seclabel,relatime,discard)
/dev/block/dm-0 on /product type ext4 (ro,seclabel,relatime,discard)
/dev/block/dm-4 on /vendor type ext4 (ro,seclabel,relatime,discard)

I guess it appears my device isn't erofs ? Guess I just got lucky...
Its ext4
And your sde9 have rw only
Maybe its super
 

lebigmac

Account currently disabled
Jan 31, 2017
1,206
813
i don't know why i always get the error of not enough space and file not being created, even when i set size=1:cry:
This is your old log why did it work? The sizes look different :unsure:
Maybe go back to that older firmware that worked until I fix this?

systemrw: Initiating procedure...

systemrw: Device is in Android mode. Ignoring
systemrw: Current device: ZTE Nubia
systemrw: Current Android version: 11
systemrw: Current SELinux status: Permissive
systemrw: Current slot is: 0
systemrw: Your super partition is located at: /dev/block/sda7
systemrw: / is read-only
systemrw: /product is read-only
systemrw: /vendor is read-only
systemrw: Adjusting permissions...
systemrw: Attempting to disable dm-verity and verification...
verification is already disabled.
Successfully disabled verity. Reboot the device for changes to take effect.
systemrw: Dumping super partition to: /data/local/tmp/systemrw_1.32/img/super_original.bin
systemrw: Please wait patiently...

13631488+0 records in
13631488+0 records out
6979321856 bytes (6.5 G) copied, 34.307404 s, 194 M/s

systemrw: Successfully dumped super partition to: /data/local/tmp/systemrw_1.32/img/super_original.bin
systemrw: Unpacking embedded partitions from /data/local/tmp/systemrw_1.32/img/super_original.bin
systemrw: Nested partitions were successfully extracted from super

systemrw: Current size of system.img in bytes: 2721116160
systemrw: Current size of system.img in MB: 2595
systemrw: Current size of system.img in 512-byte sectors: 5314680

systemrw: 'shared_blocks feature' detected @ system.img

systemrw: Increasing filesystem size of system.img...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/system.img to 830418 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/system.img is now 830418 (4k) blocks long.

systemrw: Removing 'shared_blocks feature' of system.img...
systemrw: Read-only lock of system.img successfully removed

systemrw: Shrinking size of system.img back to minimum size...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/system.img to 684001 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/system.img is now 684001 (4k) blocks long.

systemrw: Custom size of system.img in bytes: 2854096896
systemrw: Custom size of system.img in MB: 2721
systemrw: Custom size of system.img in 512-byte sectors: 5574408

systemrw: Increasing filesystem size of system.img...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/system.img to 696801 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/system.img is now 696801 (4k) blocks long.

=================================================

systemrw: Current size of vendor.img in bytes: 830291968
systemrw: Current size of vendor.img in MB: 791
systemrw: Current size of vendor.img in 512-byte sectors: 1621664

systemrw: 'shared_blocks feature' detected @ vendor.img

systemrw: Increasing filesystem size of vendor.img...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/vendor.img to 253385 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/vendor.img is now 253385 (4k) blocks long.

systemrw: Removing 'shared_blocks feature' of vendor.img...
systemrw: Read-only lock of vendor.img successfully removed

systemrw: Shrinking size of vendor.img back to minimum size...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/vendor.img to 231665 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/vendor.img is now 231665 (4k) blocks long.

systemrw: Custom size of vendor.img in bytes: 1001328640
systemrw: Custom size of vendor.img in MB: 954
systemrw: Custom size of vendor.img in 512-byte sectors: 1955720

systemrw: Increasing filesystem size of vendor.img...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/vendor.img to 244465 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/vendor.img is now 244465 (4k) blocks long.

=================================================

systemrw: Current size of product.img in bytes: 1536569344
systemrw: Current size of product.img in MB: 1465
systemrw: Current size of product.img in 512-byte sectors: 3001112

systemrw: 'shared_blocks feature' detected @ product.img

systemrw: Increasing filesystem size of product.img...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/product.img to 468923 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/product.img is now 468923 (4k) blocks long.

systemrw: Removing 'shared_blocks feature' of product.img...
systemrw: Read-only lock of product.img successfully removed

systemrw: Shrinking size of product.img back to minimum size...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/product.img to 375701 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/product.img is now 375701 (4k) blocks long.

systemrw: Custom size of product.img in bytes: 1591300096
systemrw: Custom size of product.img in MB: 1517
systemrw: Custom size of product.img in 512-byte sectors: 3108008

systemrw: Increasing filesystem size of product.img...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/product.img to 388501 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/product.img is now 388501 (4k) blocks long.

=================================================

systemrw: Current size of system_ext.img in bytes: 703995904
systemrw: Current size of system_ext.img in MB: 671
systemrw: Current size of system_ext.img in 512-byte sectors: 1374992

systemrw: 'shared_blocks feature' detected @ system_ext.img

systemrw: Increasing filesystem size of system_ext.img...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/system_ext.img to 214842 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/system_ext.img is now 214842 (4k) blocks long.

systemrw: Removing 'shared_blocks feature' of system_ext.img...
systemrw: Read-only lock of system_ext.img successfully removed

systemrw: Shrinking size of system_ext.img back to minimum size...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/system_ext.img to 177434 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/system_ext.img is now 177434 (4k) blocks long.

systemrw: Custom size of system_ext.img in bytes: 779198464
systemrw: Custom size of system_ext.img in MB: 743
systemrw: Custom size of system_ext.img in 512-byte sectors: 1521872

systemrw: Increasing filesystem size of system_ext.img...
Resizing the filesystem on /data/local/tmp/systemrw_1.32/img/system_ext.img to 190234 (4k) blocks.
The filesystem on /data/local/tmp/systemrw_1.32/img/system_ext.img is now 190234 (4k) blocks long.

=================================================

systemrw: Joining all extracted images back into one single super image...
systemrw: Please wait and ignore the invalid sparse warnings...

Invalid sparse file format at header magic
Invalid sparse file format at header magic
Invalid sparse file format at header magic
Invalid sparse file format at header magic
Invalid sparse file format at header magic

systemrw: Successfully created patched super image @
systemrw: /data/local/tmp/systemrw_1.32/img/super_fixed.bin

systemrw: Congratulations! Your image(s) should now have R/W capability
systemrw: Please reboot into bootloader and flash the file(s) manually
 
  • Like
Reactions: izsdeaman

lebigmac

Account currently disabled
Jan 31, 2017
1,206
813
If you guys are bored you can try doing the yuki guide which is basically a clone of this thread...
If you can do the rw magic manually using the make_ext4fs binary then we can seamlessly implement that into my script by adding 1 line of code.
If you guys can figure out where to find these 2 selinux files for each subpartition of super.img regardless of device manufacturer then we have the solution to the problem and the whole world can enjoy a fully read/write-able device :D(y)

Anyone familiar with this make_ext4fs binary? And any selinux experts please feel free to chime in. Thanks! (y)


for system.img
Bash:
system_file_contexts
system_fs_config

for product.img
Bash:
product_file_contexts
product_fs_config

for vendor.img
Bash:
vendor_file_contexts
vendor_fs_config
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 4
    Hello. I tried to use the automatic script in twrp but I get the error that my device is not supported. I also tried to run the script manually, but nothing happens. I'm on Oneplus 7 Pro, Android 12(GM1903_11.H.30), TWRP 3.7.0_12. Can someone help?
    Systemrw_1.32 script is not compatible with A12 yet.
    Hello. I added this piece of info to front page ;)(y)
    Depending on what filesystem format your super's sub-partitions are in you might get lucky in A12+ at least on some sub-partitions using the old version of the script. New version is in the works and should be ready soon hopefully ;)(y)

    Note:
    To run it in Android 12+ you must edit the systemrw.sh file with text editor.
    Simply disable sdkCheck() function at line #420
    It should look like this:
    #sdkCheck
    Now save file and run script. Good luck!
    2
    I ran this on my Pixel 5 with Android 12 & TWRP 3.6.2
    after running the script, I got three red messages:

    "Updating partition details..."
    "failed to mount '/system_root' (invalid argument)"
    "failed to mount '/system_ext' (invalid argument)"
    "failed to mount '/vendor' (invalid argument)"

    the system partition does seem to be RW now
    I can create, move, and delete files
    that's normal, you just changed the partitions and twrp doesn't like it. On twrp reboot it would be fine again
    2
    It didn't work on LE2127 after multiple tries...unless I am doing something wrong!
    i am also using it on custom roms but oos12.13 have erofs and custom doesn't that's the reason for working custom rom, ( CUSTOM ROM DONT HAVE EROFS ) ......
    2
    can i just pause the script before joining the partition back to be super image

    the problem is my partition is EROFS so i just want to pause the script and make my modifications then resume running the script

    thanks
    I guess you could open the systemrw.sh script file with notepad and add this command
    read -p "Press enter to continue"
    how about adding that line between lines #233 and #234 ? :unsure:
    after lpUnpack but before my MakeRW procedure
    @jackeagle

    By the way soon it will be the official 2nd anniversary of my unique and original MakeRW procedure. I'm so excited! I can't wait to show you guys the new version! ;)(y)
    1
    hey guys, modified the rw zip a bit to support android 12, worked for me on my Moto G Stylus 5G that shipped with 12, everything in super is full rw. I just ran the zip from twrp 1 time and all was good. I can confirm that my stock super was def erofs

    I ran this on my Pixel 5 with Android 12 & TWRP 3.6.2
    after running the script, I got three red messages:

    "Updating partition details..."
    "failed to mount '/system_root' (invalid argument)"
    "failed to mount '/system_ext' (invalid argument)"
    "failed to mount '/vendor' (invalid argument)"

    the system partition does seem to be RW now
    I can create, move, and delete files
  • 160
    PLEASE NOTE: THIS PROGRAM IN ITS CURRENT STATE ONLY WORKS ON EXT4 PARTITIONS WITH THE INFAMOUS SHARED_BLOCKS READ-ONLY FEATURE!!! NEXT VERSION WILL HAVE EROFS/F2FS SUPPORT. OPEN BETA COMING SOON! ;)(y)


    If you can't get this script to work on your device check out the brand new sophisticated superrepack tool by @munjeni


    Welcome to

    logo_large.jpg

    SystemRW / SuperRW (feat. MakeRW) v1.32 by lebigmac
    NEW VERSION COMING SOON! STAY TUNED!;)(y)
    ANY TALENTED DEVELOPERS WANT TO CONTRIBUTE TO NEXT VERSION? PLEASE CONTACT ME NOW! THANKS! :love:(y)

    Creation date: February 2021
    Updated: August 2021

    Requirements:
    • rooted STOCK Android 10 or newer (custom ROM should already be R/W!)
    • at least 10+ GB free space on phone for dumping data
    Description:
    A script for all Android power users that wish to make their read-only Android 10+ system read/write-able again to remove bloatware and make more thorough customizations to their device.
    Script only modifies super and vbmeta partitions. /data partition is not affected. It's only used for dumping data and for storing script files.
    In a nutshell this is what the script is doing:
    • dumps your existing super OR your system / product / vendor partitions depending on whether or not you've got super partition
    • extracts embedded read-only partitions (system, vendor, product...) from super if applicable
    • makes these partitions read/write-able
    • joins everything back together to new super.img OR NOT depending on whether or not you've got super partition
    • flashes read/write-able images back to device using the super fast Kolibass technique (only in recovery mode)

    NOTE:
    • Before running this experimental software on your device it is recommended to make a full backup of your device (just in case you are unlucky enough to end up in an irreversible bootloop)
    • Extract BUNDLE.zip (the included sysrw_repair.zip is only for fixing error 73!)
    • The script can be run both inside custom recovery and inside Android operating system.
      If you run script in Android mode you will need to fastboot flash the patched image(s) manually!
    • To check whether or not you've got a super partition on your device you can run this command: adb shell "ls -l /dev/block/by-name/super"
    • To check whether or not your device has the notorious 'shared_blocks' read-only feature you can run this code:
      Bash:
      adb shell
      su
      for a in /dev/block/dm-*; do tune2fs -l $a | grep -e "feat" -e "vol" && echo; done
    • To check whether or not the script worked correctly you can run this code:
      Bash:
      adb shell
      su
      for a in /dev/block/dm-*; do mount -o remount,rw $a; done
    Manual installation:
    • Extract flashable.zip and copy systemrw_*VERSION* folder into /data/local/tmp/
    • run this command to make the script executable:
      chmod +x /data/local/tmp/systemrw_*VERSION*/systemrw.sh
    Automatic installation:
    Installation of the script has never been this easy!
    Download the flashable.zip below, do NOT enable zip signature verification and simply install it in your custom recovery (works in TWRP, OrangeFox and PBRP!)
    The installer binary will auto-detect whether or not your device has a super partition and launch the script accordingly with the proper command line arguments.

    Flashable zip custom usage:
    You can set these custom installation arguments in the included config.ini file.
    Simply extract the flashable.zip and modify the included config.ini file and then save the file. Then compress the systemrw_*VERSION* and META-INF folders again as a new .zip and install it in recovery.
    First line of config.ini contains the script arguments for those WITHOUT super partition.
    By default this line is completely empty (no space).
    Second line of config.ini contains the script arguments for those WITH super partition.
    For example if you already dumped your super_original.bin and want to skip that process next time you install the .zip then put this in line #2 of config.ini :
    in=`realpath /dev/block/by-name/super` size=15
    Remember if you decide to use custom arguments in config.ini then the first character should always be an empty space. If no arguments are used such as by default in line #1 (no super) then the line should be completely empty, no space, nothing.

    Script usage:
    If you've got no super partition then simply call the script with no arguments from the shell (see examples below).
    If you've got a super partition I would recommend using the optional size=15 parameter as well to give some extra free space (in MB) to each partition.
    Optional script arguments:
    Replace x with your custom value
    • in=x *THIS IS IGNORED IF YOU'VE GOT NO SUPER PARTITION*
      With this flag you can specify an existing super image as input and skip the entire dumping of the super image process. Here you can use the super_original.bin which you dumped earlier with systemrw or the official unsparsed super.img from your downloaded firmware. (unsparse with simg2img). It's also possible to use your super partition block device as input.
      If omitted, systemrw will dump super image from phone to ./img/super_original.bin
      (path is relative to the script)
    • out=x *THIS IS IGNORED IF YOU'VE GOT NO SUPER PARTITION*
      With this argument you can specify the output path of the new patched super file.
      If omitted, default output value is ./img/super_fixed.bin
    • size=x *ONLY RECOMMENDED IF YOU'VE GOT SUPER PARTITION*
      With this parameter you can specify the extra free space (in megabytes) that will be added to each partition. There is a limit as to how much extra free space you can add per partition. Check your lpdump.txt to find out the exact maximum extra size.
      If omitted, default extra size is 0 (shrink to minimum)

    Examples:
    Bash:
    adb shell
    su
    cd /data/local/tmp/systemrw_1.32
    chmod +x ./systemrw.sh
    
    # Run this command *IF YOU'VE GOT NO SUPER PARTITION*
    ./systemrw.sh
    
    # Run this command if you're first time user *AND YOU'VE GOT SUPER PARTITION*
    # Specify the extra free space in megabytes for each partition:
    ./systemrw.sh size=15
    
    # Plug an existing super image into the script like this *ONLY IF YOU'VE GOT SUPER PARTITION*
    ./systemrw.sh in=./img/super_original.bin size=15
    
    # Specify both the input file as well as the output destination *ONLY IF YOU'VE GOT SUPER PARTITION*
    ./systemrw.sh in=./img/super_original.bin out=./custom/path/super_fixed.bin size=15
    
    # EXPERT EXAMPLE:
    ./systemrw.sh in=`realpath /dev/block/by-name/super` out=./img/super_fixed.bin size=50

    Uninstallation:
    • To free up space and keep script as well as r/w capability you can simply delete /img subfolder at /data/local/tmp/systemrw_1.32/img
    • To delete script and keep r/w capability you can simply delete whole script folder at /data/local/tmp/systemrw_1.32
    • To undo all changes performed by the script you can simply reflash original stock read-only super image and re-enable dm-verity and verification either through adb/fastboot or with the included avbctl binary (inside /tools/ subfolder - also available in recovery).

    Troubleshooting:
    If you get error 255 in custom recovery when trying to install flashable zip then try to install it manually. If you encounter this error please send me this file /tmp/recovery.log
    Make sure the script folder was correctly extracted to:
    /data/local/tmp/systemrw_*VERSION*
    If you can't run the script try making the file executable like this: chmod +x ./systemrw.sh
    If you still can't get it to work run which sh in your shell and replace the shebang in the first line of the script with the output of that command. Don't remove the first two #! symbols though. Then save the file and try again.
    Make sure you have full read write access to the /data/local/tmp directory and that the containing files are not encrypted in custom recovery!
    If you get bootloop after successfully flashing super_fixed.bin then you can undo bootloop simply by re-flashing original stock super image and re-enabling dm-verity and verification with the included avbctl binary (inside /tools/ subfolder - also available in recovery). Those are the only changes performed by the script.
    Good luck!

    About:
    I did not come up with all this by myself. After searching for a solution for countless days without success, going even as far as learning hex editing - I accidentally came across a couple of very interesting threads burried deep inside the new forum interface where this method has been described by various enthousiasts (links can be found in the credits section below). Therefore I take absolutely no credit for the underlying core mechanisms of the script. I'm only the amateur who put it all together into a compact script so that everybody can enjoy an Android system that's read/write-able again. Just like it used to be in Android 9 or earlier. Before this annoying 'shared_blocks feature' was implemented.

    Credits:
    Huge thanks to @Brepro1 for allowing me to use his awesome tutorial and make it into a script. Without your tutorial guiding me I couldn't have created this script.
    Huge thanks to @Kolibass for allowing me to use his partition tools for Android. Without your tools this script would not work on the Android platform! This genius also showed me how to flash a 5GB file to my partition in just under 30 seconds! Much faster than fastboot! I still can't believe it!
    Big thanks @munjeni for allowing me to use his amazing superunpack V1 tool in the initial version. It helped me to understand how these super images work.
    Thanks @AndyYan your great tutorial also helped me a lot for automating the script especially the lpdump part.
    Thanks @bynarie for making available his otatools package! A part of it was bundled with the initial version which helped me to create this universal version. It's still part of the troubleshooting repair script to fix error 73.
    More thanks @gabrielfrias for his helpful comment
    Thanks @YOisuPU and of course @topjohnwu for discovering the 'shared_blocks feature'
    Thanks @HemanthJabalpuri for assisting me in optimizing the underlying algorithm!
    Thanks @aIecxs for helping me fix some shell scripting errors (y)

    Disclaimer:
    #Disclaimer v2.0​
    This open source software is provided as is without any kind of warranty or support whatsoever.
    By using and viewing this software you agree to the following terms:
    • Under no circumstances shall the author be held responsible for any damages that may ensue from the (inappropriate) use of this software.
    • All responsibility, liability and risk lies with the end-user. You hereby agree not to abuse this software for illegal purposes.
    • Under no circumstances shall the comments & title section of the script (lines #1 - #100) as well as the included update-binary be modified or removed by the end-user without the original author's explicit consent.
    • Under no circumstances shall the end-user steal and / or abuse my entire SystemRW project or parts thereof (including but not limited to my update-binary, my script, my program logo, my program name or the names of my functions and/or my variables and more...) only to rename and republish my SystemRW / SuperRW feat. MakeRW project (or parts thereof) as his/her own creation without even mentioning original source!!! (yes this actually happened :( perpetrated by at least 2 fellow forum members...)
    • Unverified, unauthorized re-uploads of any files contained within this project to 3rd party websites are not permitted without the original author's prior knowledge and consent (for security reasons). If you want to share this software with your friends please just send them the link to this website. Thanks.
    • The end-user is allowed to improve the underlying algorithm (as long as no malicious code is added) and post his/her improvements, results and feedback right here in the official SystemRW / SuperRW feat. MakeRW project thread @ xda-developers.com
    • If the end-user wishes to re-use my SystemRW / SuperRW featuring MakeRW project (or any parts thereof) inside his/her own project then he/she shall first contact me! Thanks!
      If you want to make a video tutorial about this project please contact me first!
      Thank you! I can give you high resolution project logo and more!

    Please make sure to post your feedback and suggestions in the official thread right here.
    Enjoy customizing your fully read/write-able Android device! And feel free to share your Android system mods with other users in this thread! Thanks!


    v1-31d_01-jpg.5309953
    v1-31d_03-jpg.5309957


    1-jpg.5235933


    working-jpg.5525671


    Confirmed working on these devices:
    Note:
    To run it in Android 12+ you must edit the systemrw.sh file with text editor.
    Simply disable sdkCheck() function at line #420
    It should look like this:
    #sdkCheck
    Now save file and run script (or repack flashable.zip and flash). Good luck! (y)


    Download v1.32 mirror #1
    Download v1.32 mirror #2
    more official download mirrors coming soon!
    current status: experimental


    If you like this project and want to support further development of SystemRW / SuperRW feat. MakeRW & the creation of more amazing projects like this then please feel free to donate to the original developer by clicking the button below. Thanks! Your support is very much appreciated!

    Donate
    15
    If the script works on your device please send me your log files from this folder:
    /data/local/tmp/systemrw_1.32/log/

    And please write your phone model - Android version - firmware version

    Then I can add you to the list of successful devices and it will be helpful for further development. Thank you!(y)
    10
    Okay I know you guys have been waiting a long time... Thanks for your patience, loyalty, support and your interest in this amazing project for the past year! Unfortunately there's lots of dubious copycats floating around by now. Remember you saw it here first ;)(y)
    The one and only, the original
    SystemRW / SuperRW featuring MakeRW by lebigmac
    This month new version should be ready :D(y)
    I'm working on it hard 🛠️⚙️⛏️🔧✂️🔨
    Hopefully we can start beta testing in 2nd half of April May June July August September October and then it should be ready for final release :love:
    I'm so excited!


    This is awesome! Unfortunately, it doesn't support Android 12 yet : ( .

    The new version has support for Android 12 and beyond! :ROFLMAO:

    Bash:
    sdkCheck(){
        sdkVersion=`getprop ro.build.version.sdk`
        if [ $sdkVersion -lt 29 ]; then
            printf "$app: Please install Android 10 or newer and try again\n\n" && exit 1
        else
            android=$(($sdkVersion - 19))
        fi
        printf "$app: Current Android version: %s\n" $android
    }
    9
    Is it summer holidays yet or what? So much interest in my thread right now it's crazy. I can't even keep up with every single comment there's just too many. I just want to say thank you to every single one of you for your enthousiastic interest in this amazing SystemRW / SuperRW feat. MakeRW by lebigmac project! (y)

    Guys please stop wasting your time trying to get that old version to work in Android 12 + as it was originally not designed for such a new Android version. Just be patient for a couple more days and I will officially release BRAND NEW VERSION :D(y) which has Android 12+ support out of the box, auto-resize feature and more ;)(y)
    I'm working on it hard as we speak... 🛠️

    If you're Samsung or Realme device user just send me a message and we can work on a fix! Thanks (y)
    8
    Hi @TheGhost1951 thanks for trying to help out this other user and I know you only have the best intentions but

    Please no unofficial, unverified, unauthorized reuploads of my SystemRW/SuperRW feat. MakeRW project (or any parts thereof) or else I'll have to download every single unofficial, unverified, unauthorized re-upload out there and check each individual file for any suspicious modifications by 3rd party users before I can allow it. I don't have time to do that. I prefer working on the script itself. Thanks for your understanding! (y)

    Hi @a9381 if your browser doesn't work correctly then simply try a different browser! Good luck! (y)
    And don't worry for the new version I will add at least 3 different official download mirrors for your pleasure! ;)(y)

    Don't waste your time with that old version 1.32 ! That old version only seems to work in Android 10 and Android 11.

    Brand new version with out-of-box support for A12+, auto-resize feature, next-gen Samsung devices support and more enhancements is scheduled to be released this summer! Stay tuned! ;)(y)