
MultiROM for the Samsung Galaxy S4 (Qualcomm variants)
Brought to you by AntaresOne

Code:
#include <std_disclaimer.h>
/*
* Your warranty is now void.
*
* I'm not responsible for bricked devices, dead SD cards,
* thermonuclear war, or you getting fired because the alarm app failed. Please
* do some research if you have any concerns about features included in this ROM
* before flashing it! YOU are choosing to make these modifications, and if
* you point the finger at me for messing up your device, I will laugh at you.
*
*/
Introduction
MultiROM is one-of-a-kind multi-boot mod for Galaxy S4. It can boot any Android ROM as well as other systems like Ubuntu Touch, once they are ported to that device. Besides booting from device's internal memory, MultiROM can boot from external SD card. 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 image above. ROMs are installed and managed via modified TWRP recovery. You can use standard ZIP files to install secondary Android ROMs 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
* Boot from Internal memory and MicroSD Card
Warning!
This whole thing is basically one giant hack - none of these systems are made with multibooting in mind. It is no longer messing with data partition or boot sector, but it is possible that something goes wrong (even if never happened until now) and you will have to flash stock firmware with Odin. Make backups. Always.
Installation
1. Via MultiROM Manager app
This is the easiest way to install everything MultiROM needs. Install the app and select MultiROM and recovery on the Install/Update card. If the Status card says Kernel: doesn't have kexec-hardboot patch! in red letters, you have to install also patched kernel - either select one on the Install/Update card or get some 3rd-party kernel here on XDA. You are choosing kernel for your primary ROM, not any of your (future) secondary ROMs, so select the version accordingly.
Press "Install" on the Install/Update card to start the installation.
2. Manual installation
Firstly, there are videos on youtube. If you want, just search for "MultiROM installation" on youtube and watch those, big thanks to all who made them. There is also an awesome article on Linux Journal.
Note 1: Your device must not be encrypted (hint: if you don't know what it is, then it is not encrypted).
MultiROM has 3 parts you need to install:
- MultiROM - download the ZIP file and flash it in recovery.
- Modified recovery - download the ZIP file and flash it in recovery or Mobile Odin app to flash the recovery.img contained inside ZIP.
- Patched kernel - Download the ZIP file and flash it in recovery or keep stock kernel (only for CM11-based ROMs after 6 August 2014 & CM12-based ROMs)
You current rom will not be erased by the installation.
Download links are in the third post.
Adding ROMs
1. Android
Go to recovery, select Advanced -> MultiROM -> Add ROM. Select the ROM's zip file and confirm.
3. Other systems (once ported to device)
Firefox OS and Sailfish OS are just another Android ROM under MultiROM's point of view, so add them as if it were Android.
Using MicroSD Card
During installation, recovery lets you select install location. 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 MicroSD Card takes a bit more, because the external memory is (usually) slower and it needs to create the images. Also boot process is longer, highly depends on card's class. You can find ROMs installed on SD card in the "External" tab in boot menu.
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 Advanced -> MultiROM in recovery 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 Advanced -> MultiROM -> List ROMs and select the ROM you want to update.
- Select "Flash ZIP" and flash ROM's ZIP file.
Explanation of recovery menus
Main menu
- Add ROM - Add ROM to boot manager
- List ROMs - List installed ROMs and manage them
- 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 the ROM, this is more like developer option.
Source Code
MultiROM - https://github.com/Tasssadar/multirom/tree/master (branch master)
Modified TWRP - https://github.com/Tasssadar/Team-Win-Recovery-Project (branch master)
Alucard Kernel w/ kexec-hardboot patch - https://github.com/Alucard24/Alucard-Kernel-jfltexx
Googy-Max3 kernel w/ kexec-hardboot patch - https://github.com/googyanas/Googy-Max3-Kernel
Hulk kernel w/ kexec-hardboot patch - https://github.com/Tkkg1994/Hulk-Kernel
Imperium kernel w/ kexec-hardboot patch - https://github.com/Slim80/Imperium_Kernel_TW_4.4.2
KT kernel w/ kexec-hardboot patch - https://github.com/ktoonsez/KT-SGS4
CM11 stock kernel w/ kexec-hardboot patch - https://github.com/CyanogenMod/android_kernel_samsung_jf/tree/cm-11.0
CM12 stock kernel w/ kexec-hardboot patch - https://github.com/CyanogenMod/android_kernel_samsung_jf/tree/cm-12.0
CM12.1 stock kernel w/ kexec-hardboot patch - https://github.com/CyanogenMod/android_kernel_samsung_jf/tree/cm-12.1
MultiROM device tree - https://github.com/AntaresOne/multirom_device_samsung_jflte
Big thanks to Tasssadar for this awesome utility.
Thanks a lot to @daveyannihilation for the S4 template.
XDA:DevDB Information
MultiROM, multiboot for Galaxy S4 (Qualcomm variants) (GRUB-like), Tool/Utility for the Samsung Galaxy S4
Contributors
AntaresOne
Version Information
Status: No Longer Updated
Current Stable Version: 20151029-v32b
Stable Release Date: 2014-09-01
Created 2014-09-01
Last Updated 2017-05-19
Last edited: