[Android Q&A, Help & Troubleshooting] Tzul:
Recoveries...

I have analyzed the two custom recoveries from that Russian forum. I'll henceforth call them CR4 and CR5. They are virtually identical, and they were made for the Elephone P6000! Except for the kernels, of course.

A quick primer on the format of Android boot.img and recovery.img:

They start with an "ANDROID!" header containing some address and size data, and a few other things that aren't important here.

After this header, the actual Linux kernel image starts. This kernel image is usually compressed, to save space in flash memory. There are a few of popular formats, more about them in a second.

After the kernel, there's a "rootfs" or "ramdisk". It's a compressed file system that literally provides the root file system, and contains the initial files required for booting Android, or the recovery. Mainly some init scripts and binaries.

The ramdisk part usually concludes the boot/recovery image. There's an option to have a second loader afterwards, but I've never seen one personally.

In Mediatek boot/recovery images, there's also a special 512 byte sector attached to the front of the kernel and ramdisk parts, but that's not important here either.

Back to the compressed kernel formats. One is "zImage" - this is a gzipped kernel that self-extracts, i.e. it starts with a bit of decompression code and has the final gzipped kernel embedded. Our Lenovo tablet uses this format for Android 4.4, and therefore the CR4 uses it, too.

For Android 5 however, the kernel is just plain gzipped, without self-extraction code. And of course CR5 mimics that. So how does the kernel get extracted in memory then? That's done by the bootloader. The tablet uses (L)ittle (K)ernel - you might have seen the "lk" partition in the scatter file. When powering on, the boot sequence is basically preloader (the thingy that's also responsible for initiating the VCOM connection with the SPFT) -> bootloader (has fastboot integrated and is responsible for the little "recovery, fastboot, normal" menu) -> kernel (boot.img / recovery.img).

It's highly likely that the LK version from the Android 4.4 firmwares expects zImage kernels and can't handle plain gzipped kernels.

That's why CR5 does not work when the tablet is still running Android 4.4 (or more precisely, the older LK). And like I said, it'd be pointless anyway, because the two recoveries are identical (that is, their ramdisks are identical, with one silly minor difference: the banner graphic of CR4 reads "Ported by hanuma50" whereas in CR5 it reads "Ported by >>psihop<<").

So, the fact that the external SD card does get mounted in CR5 but not CR4 is not due to differences in the actual recoveries (ramdisks). It's due to the different kernels and/or bootloaders (LK).

It might be possible to create a working zImage-based recovery from the Android 5 kernel and use that on the tablets with older firmware. Maybe it's also possible to use the new LK with the older firmware, if the new LK still supports zImage...

version "4" of LK + CR4 = SD card not mounted

version "4" of LK + CR5 = fails to boot, as explained above

version "4" of LK + zImage version of Android 5 kernel = ???

version "5" of LK + CR4 = ???

version "5" of LK + CR5 = SD card mounted

Would make an interesting experiment, but I don't feel like doing it. Also, it's probably easier to have the SD card mounted in CR4 by just doing a few modifications to certain files inside the ramdisk (fstab).

I did originally consider porting a more properly adapted custom recovery to the tablet myself. But since I don't really need one (except for the initial installation of SuperSU), I probably won't try any time soon. I do all my partition backups with the SPFT. ;)