MultiROM is one-of-a-kind multi-boot mod for Nexus 7. 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 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 and MultiROM even has its own installer system, which can be used to ship other Linux-based systems.
* Multiboot any number of Android ROMs
* Restore nandroid backup as secondary ROM
* Boot from USB drive attached via OTG cable
It _is_ dangerous. 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 and you will have to flash factory images again. Make backups. Always.
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 chosing 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.
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 (multirom-YYYYMMDD-vXX-flo.zip) - download the ZIP file from second post and flash it in recovery.
Modified recovery (TWRP_multirom_flo_YYYYMMDD.img) - download the IMG file from second post and use fastboot or Flashify app to flash it.
Patched kernel - You can use either one of the stock ones in second post or third-party kernels which include the patch, you can see list in the second post. Download the ZIP file and flash it in recovery.
You current rom will not be erased by the installation.
Download links are in the second post.
MultiROM is compatible with both flo and deb.
Go to recovery, select Advanced -> MultiROM -> 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.
Download FirefoxOS ZIP package from this thread. The installation is completely the same as Android ROMs.
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.
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.
A crowdfunding campaign to get test devices took place from July 28th to August 27th 2013. Thanks all contributors, the campaign was successful, raising a total of $562. This enabled a purchase of flo and resulted in MultiROM being ported to said device and the code became much more portable.
These people pledged $10 or more and got perk "The Thread" or "The Code":
Flash this ZIP file to remove MultiROM from your device. It will erase all secondary ROMs. If you don't want MultiROM menus in recovery, re-flash clean TWRP, but it is not needed - those menus don't do anything if MultiROM is not installed.
* Fix compatibility with Ubuntu Touch rev 290 and higher. If your Ubuntu
installation won't boot, go to recovery and use "Re-patch init" option in
Advanced -> MultiROM -> List ROMs -> *ubuntu*.
* Fix excessive battery drain (~1%/hour, about 5x more) while in primary ROM
caused by a bug in kernel drivers triggered by MultiROM. Read post #465 on
XDA forums for more info - http://bit.ly/xda-flo-drain
* Mount the real /data partition to folder /android/realdata in Ubuntu Touch,
enabling sharing data between Android and Ubuntu Touch. See
http://bit.ly/ut_sharing for more info.
* Fix linux-type ROMs (Ubuntu Touch) failing to boot for some users
* Add support for testing builds of Ubuntu Touch (see XDA thread, post #308)
* Revert "mount /system in secondary ROMs read-only" - if done so, SuperSU
breaks the boot.
* Support booting ROMs directly from Manager App
* Fix FCs on CyanogenMod-based ROMs
* Fix support for USB drives formatted with NTFS, broken in v17
* Mount /system in secondary ROMs read-only
* Implement "boot the last ROM" auto-boot type
* Fix silent-but-unpleasant crash with exFAT
* Changes to support MultiROM Manager app
* Add support for exFAT
* Add overscroll bounceback effect to rom list
* Add support for controling via physical keys
* Bunch of under-the-hood changes for mako and m7 support
* Fix bootloop after flashing on certain kernels. Update your kexec-hardboot
* Initial version
* Update to TWRP 2.7.0
* Remove "save" button from MultiROM settings page, it is saved automatically
* Support for system-image based (from the Manager app) Ubuntu Touch
* Some rendering optimizations, resulting in noticeably higher FPS in recovery
* Update to support latest Ubuntu Touch testing builds
* Add support for mice connected via USB-OTG
* Fixup scrollbar behaviour in file list
* Fix installing ROMs to USB drive
* Fix ZIP verification
* Support ZIP verification for secondary ROMs
* Support OTA updates on secondary ROMs (tested with omni)
* Add "Swap ROMs" feature
* Implement "boot the last ROM" auto-boot type
* Many bugfixes
* Fix support for abootimg-based kernel installers
(fixes ElementalX and Glitch kernels)
10.11.2013 - 01
* Fix some mounting issues when using ntfs or exFAT
* Add exFAT support
* Support system-image based Ubuntu Touch installation
* Support Ubuntu Touch OTA updates, if Ubuntu is installed
via MultiROM manager app
* Fix SuperSU reporting "failed" when flashed to secondary ROM
and completely borking the MultiROM part for any subsequent
uses of "Flash ZIP" or "Backup" option
* Automatically inject boot sector with MultiROM
after ZIP installation or ADB sideload. Can be
turned off on "confirm flash" or "ADB sideload"
* Support 'adb sideload' when adding ROMs
* Support rotation while using custom recovery theme
* Don't display unsupported systems in "Add ROM" menu
* Fix instalation of some ROMs with AROMA installer
* Don't unmount /usb-otg after Adding ROM
* Fix bootloop after injecting boot on certain kernels
* Initial flo release
In order to make multi-booting possible, MultiROM has to sacrifice some security measures. Firstly, on secondary Android ROMs, /system is not mounted read-only. While there are other things preventing malicious software from messing with /system, this might potentialy make it easier for such software to attack that system.
Next, MultiROM doesn't work with /data encryption. Not many people who use custom ROMs also use encryption anyway, so that isn't much of a concern.
What do the ROMs share?
All ROMs are separate, except /sdcard, which is shared between all Android ROMs.
How many ROMs can I have?/Where are the ROMs stored?
You can have as many ROMs as you can fit in your /sdcard. All the ROMs are stored in /sdcard/multirom/roms or on an USB drive. This folder is unaccessible in Android, to prevent mediascanner from scanning it. You can either in recovery, or obtain root and go to /data/media/0/multirom/roms.
Can I have different versions of Android working alongside
Yes. As long as you select "Don't shere kernel" when installing the secondary ROM, the systems are separated.
MultiROM recovery says it's 220.127.116.11. Why isn't it updated to 2.6.3.*highernumber*?
It is, it just shows wrong version.
The menu with all the ROMs won't show up during boot, how to fix it?
Either re-flash the MultiROM zip or go to recovery, Advanced -> MultiROM -> Inject curr. boot sector.
The reason for this is that something rewrote your boot.img, which happens for example when you flash a kernel. MultiROM's boot menu is part of the boot image, so it has to be added into it again.
Will you port MultiROM to device X?
No, probably. I won't port MultiROM to any device I don't own, because it is very difficult to provide the level of support I want to provide if I can't test things myself, as proven by the Nexus 4 port. I'll probably keep buying Nexus devices and keep porting MultiROM to those myself, but I can't buy every single device - I'm still a student, all my existing devices were bought using some kind of money grant or donations from users.
But, you can port it yourself, the wiki should give you at least some idea how to do that: https://github.com/Tasssadar/multiro...rting-MultiROM
This is awesome ! With Ubuntu Touch coming in october, there'll be a party on my N7
A question though, why do we have to use a patched kernel, doesn't the kernel runs AFTER the multirom part ? I'm asking mainly because I fear for the upcoming Ubuntu Touch and maybe his brand-new kernel. If it's not compatible or will have to be patched, isn't there a risk that we have to "always" use a custom-kernel after every little update? (and Canonical knows his way in kernel updating every 2 weeks on desktop computer, especially with a new product...)
But I'm also asking to satisfy my curiosity ^^
Thank you very much, anyway, I'm glad your funding campain was a success. I can't hit the "Thanks" button enough.
MultiROM starts immediately _after_ kernel. When you select secondary ROM with different kernel, it needs to load it, somehow - that's what kexec is for. Only the kernel for primary ROM has to be patched though, so if you'd install Ubuntu Touch as secondary, it can live with it's own, unpatched kernel.
By the way, as far as I know, Canonical does not plan to support flo. Ubuntu Touch is planned to release in October, but that means it's going to get "stable" version for those 4 nexus devices (mako, manta, grouper and maguro) and possibly some new devices, which will be running Ubuntu Touch out of the box. I think flo needs a community port.
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?