[MOD] MultiROM-20200708-v33x - TWRP_3.4.0-0 [No Kexec Workaround]

afaneh92

Senior Member
Jul 31, 2012
2,221
4,121
203


You use this tool at your own risk!!

I have tried to put as many safeguards as I can,
but I cannot be held accountable for any soft-bricks, hard-bricks, loss of data and/or information,
or anything else going wrong.​

Introduction
MultiROM is one-of-a-kind multi-boot mod for Samsung Galaxy S5 (klte). It can boot any Android ROM as well as other systems like Ubuntu Touch, Plasma Active, Bohdi Linux or WebOS port. Besides booting from device's internal memory, MultiROM can boot from USB drive connected to the device via OTG cable. The main part of MultiROM is a boot manager, which appears every time your device starts and lets you choose ROM to boot. You can see how it looks on the left image below and in gallery. ROMs are installed and managed via modified TWRP recovery. You can use standard ZIP files to install secondary Android ROMs, daily prebuilt image files to install Ubuntu Touch and MultiROM even has its own installer system, which can be used to ship other Linux-based systems.

Features:
* Multiboot any number of Android ROMs
* Restore nandroid backup as secondary ROM
* Use for example Ubuntu Touch or Desktop alongside with Android, without the need of device formatting
* Boot from USB drive attached via OTG cable
Warning!
It _is_ dangerous. This whole thing is basically one giant hack - none of these systems are made with multibooting in mind. It is messing with boot sector and data partition. It is no longer messing with data partition or boot sector (actually the no-kexec workaround is messing with your boot sector), but it is possible that something goes wrong and you will have to flash factory images again.
Make backups. Always.
Installation
Manual installation
Note 1: Your device must not be encrypted (hint: if you don't know what it is, then it is not encrypted).

MultiROM has 2 parts you need to install:

MultiROM (multirom-YYYYMMDD-vXX-UNOFFICIAL-klte.zip) - download the ZIP file from the download section and flash it in recovery.

Modified recovery (TWRP_multirom_kltexxx_YYYYMMDD.img) - download the IMG file from the download section and flash it in recovery.

Your current rom will not be erased by the installation.
Downloads
Adding ROMs
1. Android
Go to recovery, enter the MultiROM section of TWRP (by clicking the icon in to top right corner) -> Add ROM. Select the ROM's zip file and confirm. As for the space, clean installation of stock 4.2 after first boot (with dalvik cache generated and connected to google account) takes 676mb of space.
2. Ubuntu Touch this is NOT SUPPORTED

Use the MultiROM Manager app to install Ubuntu Touch.

Ubuntu Touch is in development - MultiROM will have to be updated to keep up with future changes in Ubuntu, so there's a good chance this method stops working after a while and I'll have to fix it.
Using USB drive
During installation, recovery lets you select install location. Plug in the USB drive, wait a while and press "refresh" so that it shows partitions on the USB drive. You just select the location (extX, NTFS and FAT32 partitions are supported) and proceed with the installation.
If you wanna use other than default FAT32 partition, just format it in PC. If you don't know how/don't know where to find out how, you probably should not try installing MultiROM.
If you are installing to NTFS or FAT32 partition, recovery asks you to set image size for all the partitions - this cannot be easilly changed afterward, so choose carefully. FAT32 is limited to maximum of 4095MB per image - it is limitation of the filesystem, I can do nothing about that.
Installation to USB drives takes a bit longer, because the flash drive is (usually) slower and it needs to create the images, so installation of Ubuntu to 4Gb image on my pretty fast USB drive takes about 20 minutes.
Enumerating USB drive can take a while in MultiROM menu, so when you press the "USB" button in MultiROM, wait a while (max. 30-45s) until it searches the USB drive. It does it by itself, no need to press something, just wait.


Updating/changing ROMs
1. Primary ROM (Internal)
  • Flash ROM's ZIP file as usual, do factory reset if needed (it won't erase secondary ROMs)
  • Go to the MultiROM section of TWRP (by clicking the icon in to top right corner) and do Inject curr. boot sector.

2. Secondary Android ROMs
If you want to change the ROM, delete it and add new one. To update ROM, follow these steps:
  • Go to the MultiROM section of TWRP (by clicking the icon in to top right corner) -> List ROMs and select the ROM you want to update.
  • Select "Flash ZIP" and flash ROM's ZIP file.
  • In some cases, you might need to flash patched kernel - get corresponding patched kernel version from second post and flash it to the secondary ROM sama way you flashed ROM's ZIP file.

Explanation of recovery menus
Main menu
- Add ROM - add ROM to boot
- List ROMs - list installed ROMs and manage them
- Inject boot.img file - When you download for example kernel, which is distrubuted as whole boot.img (eg. franco kernel), you have to use this option on it, otherwise you would lose MultiROM.
- Inject curr. boot sector - Use this option if MultiROM does not show up on boot, for example after kernel installation.
- Settings - well, settings.

Manage ROM
- Rename, delete - I believe these are obvious
- Flash ZIP (only Android ROMs) - flash ZIP to the ROM, for example gapps
- Add/replace boot.img - replaces boot.img used by this ROM, this is more like developer option.
- Re-patch init - this is available only for ubuntu. Use it when ubuntu cannot find root partition, ie. after apt-get upgrade which changed the init script.
Source code
Thanks
MultiROM team
@nkk71 for No Kexec Workaround
@klabit87 for inspiration and mrom device tree
@vasishath
@shahan-mik3
 
Last edited:

afaneh92

Senior Member
Jul 31, 2012
2,221
4,121
203
FAQ and other notes

No-kexec workaround
Q: What is the no-kexec workaround?
A: The no-kexec workaround by nkk71 allows you to use MultiROM without having to flash a kexec enabled kernel.
More info here
Q: MultiROM bootmenu never show up?
A1: You need MM (or based) kernel.
A2: Go to recovery, enter the MultiROM section of TWRP (by clicking the icon in to top right corner) -> Inject boot sector.
Q: Secondary ROM reboot to recovery?
A: Enter recovery > MultiROM menu > List ROMs > Select your ROM and Run Restorecon.
 
Last edited:

afaneh92

Senior Member
Jul 31, 2012
2,221
4,121
203
Changelog

Code:
MultiROM-20200708-v33x - TWRP 3.4.0-0
======================================
* MultiROM: Better compatibility with android 8 and 9
* MultiROM: Fix magisk root on secondary rom
* Include all recent improvements from TWRP 3.4.0-0

MultiROM-20180111-v33x - TWRP 3.2.1-0
======================================
* MultiROM: Better compatibility with android 8
* MultiROM: Update default android rom icon
* Include all recent improvements from TWRP 3.2.1-0

MultiROM-20170728-v33v - TWRP 3.1.1
======================================
* Fix MultiROM DPI
* New implementation to handle external boot
   on Ext4 / F2FS MicroSD or USB Drive in order
   to allow access to the external storage for media,
   through the storage 'external_multirom' path
* Include all recent improvements from TWRP 3.1.1

MultiROM-20170411-v33b - TWRP 3.1.0
======================================
* Update Qcom overlay headers to latest cm14.1
 
Last edited:

1981sebas

Senior Member
Mar 12, 2015
411
96
0
Tested on stock 6.0.1 and on cm14.1 as primary work on both!

Did you choose the secondary rom from boot menu?
I never had option at boot it automatically boot on primary rom even if i hold volume key . Iv tried every option possible in twrp . Can you please explain me after adding rom the exact procedure .
 

afaneh92

Senior Member
Jul 31, 2012
2,221
4,121
203
i tried multirom for kltekdi again.
i'm so stupid... I thought about multirom twrp again, it was easy to build...
(I used a 6.0 based device tree on 7.1 based branch)
thank you thank you thank you....
If you just renamed every klte to kltekdi it will be the same!
Or you compined kltekdi with multirom configs?
Any way I will make device tree for rest variants.