[Galaxy S II Original Android Development] Lanchon:
IsoRec: Isolated Recovery for the Exynos 4210 / Galaxy S2 Family

UPDATE: This change has been merged into official CyanogenMod 11, 12.1 and 13 !!!

UPDATE: Official IsoRec TWRP 3 for i9100 is now available !!!

UPDATE: You can now use official i9100 TWRP on d710, i777 and n7000 !!!

UPDATE: Unofficial CM13 for i9100g by adxamg now supports IsoRec !!!
​

What is this about?

For too long the owners of Exynos 4210 family devices have been forced to use whatever recovery was chosen by their ROM or kernel provider of choice. These devices have a dedicated recovery partition that is apparently vestigial, and their bootloaders are seemingly unable to boot it. For this reason, the recovery ramdrive is typically bundled together with the kernel and the Android boot ramdisk in a monolithic binary, usually referred to as simply "the kernel" (both ramdrives share a single embedded kernel image).

This means that using your choice of recovery is a practical impossibility:

To change the recovery you must also replace the kernel and the Android boot ramdrive, possibly introducing issues with your ROM.

If you update your kernel or kernel-bundling ROM, you will loose your custom recovery if you had one.

If the kernel bundled with your choice of custom recovery does not boot, your Android will probably not boot either, and you will need a PC to debrick.

This already bad situation was exacerbated with CM 12.1, which includes a severely restricted recovery in official releases, to the point that some official maintainers have had to release semi-official kernels with alternate recoveries just to keep the XDA crowd from lynching them and ripping their limbs off.

What is IsoRec?

IsoRec (Isolated Recovery) is a very simple proposal aiming to solve this problem once and for all. ROM and kernel maintainers can keep on bundling their preferred default recovery, and users gain the freedom to override. Your kernel maintainer has to merge the IsoRec patch (or implement their own compatible solution) for you to be able to use an isolated recovery.

Kernel maintainers are kindly asked to respect their users' freedom by merging this simple patch. Your rate of adoption will make or break this initiative.

How does it work?

It is extremely simple. The IsoRec-patched boot sequence is as follows:

The bootloader loads the kernel and the unified ramdrive, then fires up the kernel.

The kernel starts and then invokes the unified ramdrive.

If booting Android, the unified ramdrive replaces itself with the nested Android boot ramdrive and invokes it.

Else if booting recovery, the IsoRec-patched unified ramdrive chooses the recovery ramdrive as follows:

if the raw recovery partition (/dev/block/mmcblk0p6) contains valid lzop-compressed data

and said data is a valid cpio archive

then use that cpio archive as the recovery ramdrive;

else use the default recovery ramdrive that comes nested within the unified ramdrive.

Finally the unified ramdrive replaces itself with the chosen recovery ramdrive and invokes it.

Where can I find the IsoRec patches?

These links are of interest only to kernel maintainers:

CyanogenMod patch: https://github.com/CyanogenMod/andr...mmit/9bfbaf337207359ef6aefe0a329a3b760054a6b7

Dorimanx patch: https://github.com/Lanchon/IsoRec-D...mmit/fe2288665fca2eb33426b71086fc7282ee687e68

Where can I find some IsoRec-compatible kernels?

In the future, hopefully everywhere. For now you can use my CM 11/12.1/13 TRIM-IsoRec kernels:

https://www.androidfilehost.com/?w=files&flid=47607

UPDATE: Official CyanogenMod 12.1 and 13 kernels are now IsoRec-compatible !!! (link)

UPDATE: Unofficial Dorimanx builds by gsstudios are now IsoRec-compatible !!! (link)

Where can I find some IsoRec-compatible recoveries?

https://www.androidfilehost.com/?w=files&flid=47550

(The "disabler" files just clobber the contents of the isolated recovery partition so that the default recovery bundled with the kernel boots instead.)

UPDATE: Unofficial IsoRec TWRP 3 for i9100 by arnab has been released !!!

UPDATE: arnab and Dees_Troy teemed up to give us official TWRP 3 !!!

NOTE: TWRP 3 incompatibilities with CM 12.1 kernels have been fixed as of TWRP 3.0.2.0.

Note: I did not build any of the TWRP recoveries myself, I just bundled images shared by other developers. Big thank you to [MENTION=414800]arnab[/MENTION], [MENTION=5294352]cyril279[/MENTION] and [MENTION=6074762]dimoochka[/MENTION] for the TWRP images! Recovery developers are welcome to reuse my flashing zips, just please remove my name from the filename AND the flashing script. Use lzo -9 compression and remember to sign your zips!

TWRP 3 for n7000, i777 and d710

You can use official i9100 TWRP on d710, i777 and n7000 with TWRP Patcher.

Installing TWRP 3 the Easy Way

There are many ways to skin a lolcat. You can easily flash a TWRP .img file (or any IsoRec recovery .img file) on the Exynos 4210 S2 family via adb from your PC. (Prerequisite: working adb connection and tools.) Try it out:

Download the 'twrp-X.X.X.X-i9100.img' file.

Switch to adb root by typing this in your PC:

adb root​

(Requires root on your phone. In CM, enable adb root in developer settings.)

Flash the recovery by typing this in your PC:

adb push twrp-X.X.X-X-i9100.img /dev/block/mmcblk0p6​

WARNING: DO NOT MISTYPE ANYTHING !!!

If you do, you can HARD-BRICK your phone FOREVER. Better copy/paste to be sure.

WARNING: DO NOT TRY THIS IN ANY DEVICE EXCEPT EXYNOS 4210 S2 PHONES !!!

If you do, you can HARD-BRICK your device FOREVER. The 4210 devices are: i9100, n7000, i777, d710 and sc02c.

XDA:DevDB Information

IsoRec, Tool/Utility for the Samsung Galaxy S II

Contributors

Lanchon

Version Information

Status: Stable

Created 2016-01-12

Last Updated 2016-06-22