[Android Software/Hacking General [Developers Only]] steadfasterX:
FIsH hydra (multiboot in FIsH)

Bringing multiboot to your device is still not finished yet.

I just wanted to release FIsH now because I was able to proof the working concept based on TWRP and as FIsH is nothing device specific anything else should do so as well.

I have little hope that maybe other developers step in and trying to help me with this but well if not it doesn't matter.. just taking longer ;)

The whole thing of multiboot is a WIP (work in progress) currently.

But now you can prepare yourself for a possible way on this by starting a port of TWRP-in-FIsH first to see if the FIsH concept works for your device. This is strongly recommended to start with whereever we will end up here. Then come back here and hopefully until then I have some news about that topic..

So in

theory

multibooting by FIsH

should

be possible. FIsH is just executing your ramdisk so..

The only thing we would need is a way to start any of the tools already available right?

Correct. But.. any of them have its own requirements and way of work. So I need to investigate the bowels of them first to adapt them to FIsH.

Let's think about my first choice: multiboot by efidroid.

While it is quite new for me and it's implementation of booting multiple ROMs is very nice and different from MultiROM. Kudos to MultiROM which provide multi boot of custom ROMs for years but I really like the approach of efidroid (even when I just starting to use it).

When you would be able to boot into efidroid with FIsH you could use as many (unpatched) ROMs as you like. Just 1 or 20 - depending on your disk space mainly. So what does that mean? With FIsH you can hijack the boot and jump in efidroid and now u r able to boot whatever custom ROM you like. That's the theory.

The practice is: efidroid is a bootloader and so completely different to TWRP for example. Using the same hack here will not work without modifications of efidroid and maybe FIsH. The key here is to use the efidroid binary plus the cmdline needed to get a custom ROM booted.

Don't get me wrong what NEVER will work is booting into efidroid like fastboot boot uefi_boot.img can provide. The first thing what I'm trying to achieve is to use the efidroid binary plus the needed cmdline to boot up a manually added custom ROM (thx to the efidroid dev [MENTION=313770]m1cha[/MENTION] by the way.. I promise to bug u as often as possible ;) ). When this works we have won. Well it will be far away from user friendly leaving it this way but it should be possible to write a GUI (e.g. based on AROMA) and then doing the actions efidroid offers in its boot menu. So.. at the end some kind of MultROM but without kexec patches would be possible then.

The other way around: multiboot by MultiROM.

A long player in the game of multiboot and often ported to many devices. The problem here is that it is more than just a ramdisk. It is splitted into a modified TWRP plus MultiROM itself which needs to be flashed from within TWRP. This flashing will inject modifications in your /boot image so it will not work this way on locked devices out of the box.

Before I want to dive into the deeps of a possibly MultiROM implentation for FIsH I want to end my testing for efidroid. So atm I cannot say if there will be a way or not because for this I need to find out what MultiROM really do in the boot image and adapt this change to FIsH. I strongly believe that this can be adapted but my time is limited and my priority lays on efidroid for the moment.

Tbh bringing up the modified TWRP version should be easy because it will work the same way as bringing the ordinary TWRP to FIsH but the other part in the boot image is what I'm not sure about what it does (haven't had the time to look into this yet).

If u feel like a developer and you are able to unbrick a soft-bricked device then feel free to investigate and try on your own and let me know ;)

Update (2017-06-27):

I had the time to look into the possibilities of a multirom port to FIsH.

The bad news: its not easy as thought. Its near impossible yet not complete impossible.

I was a little bit confused by a new compile flag in multirom named MR_NO_KEXEC which allows you to use kernels not patched for kexec-hardboot.

Well but its not that easy..

- using kexec-hardboot needs a patched kernel

- and not using it (MR_NO_KEXEC flag set) will replace the whole boot partition(!) when a secondary ROM boots

So both options will break and can't be used.

The only way to go would be to modify the multirom sources (likely the trampoline part) to behave like efidroid does (heavy usage of loop devices instead of the current phys ones).

You can think of that this modification goes VERY deep, means a LOT of work and requires heavy C / C++ skills.

That's why I can't proceed here. I don't think that it is worth it tbh so I will investigate the other options and abandon the MultiROM approach.

The FIsH plate (sdcard booting)

Thanks to [MENTION=7006025]BigCountry907[/MENTION] we could boot FIsH on every qualcomm device in a manner which has the potential to root any device, boot any ROM and more.

You remember? FIsH can be installed on a

rooted

device ONLY!

That's still true but with this you can boot e.g. TWRP-in-FIsH even on a not rooted MM / N /... by using the FIsH plate..

The whole process makes use of a qualcomm feature which let you do this.

- the whole process is incredible complicated to get it working!!!

- the whole process is very sensitive and you have to find the right combination of needed partitons to make it work

- the whole process is a complete try & error

- if I mean IF I get this working I could patch the bootloader partition on that sdcard partition without touching the REAL bootloader to test without bricking...

- I work together with [MENTION=7006025]BigCountry907[/MENTION] to get it working but we live in complete diff timezones which makes it not easier :P

-

If you want to help you can find me in the IRC (see OP)

.