[MOD] MultiROM v33

Search This thread

BIGWORM

Retired Forum Moderator
Sep 18, 2009
2,132
1,023
"If you don't mind, please test MultiROM with the fingerprint sensor and see what happens - I don't use the fingerprint sensor myself so I don't know."

@500 Internal Server Error Ty so much for this I love it! I fastboot-flashed the latest stock images, left the system read only and did not flash superSU as my primary, can add cards with Pay and pass the Safety net test easily. I have fingerprint set up and it works flawlessly. However I have 3 cmte ROMs installed secondary and cannot use fingerprint. I get this: https://goo.gl/photos/6AtiLejV4kR3BjUz9
Any fix on this?

Sent from my Nexus 6P using Tapatalk
 

ohlin5

Senior Member
Feb 24, 2012
910
358
Verizon Blows, USA
Thank you for this! Very, VERY excited to see where this goes! If I could have one of my roms be straight stock for foolproof AP compatibility yet have a second DD that would be amazing! Will be keeping on eye on this development, thanks again!!
 

matteosaeed

Senior Member
Oct 3, 2012
1,128
411
NY
Samsung Galaxy S21 Ultra
That's not supposed to happen: which ROMs (secondary, primary) are you using, and which kernels?

I am using elementalx patched kernel
my primary is pure nexus cmte
my secondary is cm13 nightly.

originally installing pure nexus as primary and screwed as the secondary, it booted up fine, but with screwed it is aosp not cm, and when i flashed supersu for the secondary, it bootlooped, also when I installed any cm based rom, it would not boot up (wouldn't go past the google logo and unlocked lock sign). The trick was to flash the kernel after going through with the installation , and cm booted up for me just fine.
 
Last edited:
Jun 29, 2014
38
310
I am using elementalx patched kernel
my primary is pure nexus cmte
my secondary is cm13 nightly.

originally installing pure nexus as primary and screwed as the secondary, it booted up fine, but with screwed it is aosp not cm, and when i flashed supersu for the secondary, it bootlooped, also when I installed any cm based rom, it would not boot up (wouldn't go past the google logo and unlocked lock sign). The trick was to flash the kernel after going through with the installation , and cm booted up for me just fine.
SuperSU not working is a known issue. As for the kernel issue, I use Stock 6.0.1 as the primary and CM 13 nightly as the secondary and I haven't seen this.
 

dsmitty166

Senior Member
Aug 31, 2010
3,952
5,989
Sioux Center, Iowa
I am using elementalx patched kernel
my primary is pure nexus cmte
my secondary is cm13 nightly.

originally installing pure nexus as primary and screwed as the secondary, it booted up fine, but with screwed it is aosp not cm, and when i flashed supersu for the secondary, it bootlooped, also when I installed any cm based rom, it would not boot up (wouldn't go past the google logo and unlocked lock sign). The trick was to flash the kernel after going through with the installation , and cm booted up for me just fine.

SuperSU not working is a known issue. As for the kernel issue, I use Stock 6.0.1 as the primary and CM 13 nightly as the secondary and I haven't seen this.

SuperSu 2.52 is the only one that appears to successfully install on secondary
 

galza

Senior Member
Sep 29, 2011
974
139
kabri
Whats thw thing with usb support? I have a usb otg type c with my backup roms.after i flash multirom would i be able to restore roms to primary or secondary? Or in the modified recovery i cant mount any usb otg? Glad to hear answers guys...i think i will wait for usb support because i put all my rom setups and stuff on my usb and not in internal storage
 

dsmitty166

Senior Member
Aug 31, 2010
3,952
5,989
Sioux Center, Iowa
Shouldn't the Gapps log say "Changing mounts to ROM DU_Angler_6.0.1" instead? It seems that you're trying to flash the Gapps package as a separate ROM; try tapping the ROM in the MultiROM view, then select Flash Zip; that will flash the zip in the existing ROM.

This is how I did it initially. However, I tried again later and it worked via the same method. So I might have had some personal issues during that time :)
 

andythesk8r

Member
Dec 11, 2008
7
0
Thats what i thought. I remember doing the same thing back in the s4 days but didnt know if anything had changed or if this phone was By different. thanks for the quick response.
 
Jun 29, 2014
38
310
Could you make a separate thread in the Original-Development about the HardBoot patch, and irlts inner workings? Tasssdar made a thread like that for the Nexus 6, and it helped a lot of kernel devs get up to speed quickly. It also contained example commands, etc. and was a great place for Kexec newcomers to learn.

I was going to try to write a guide, then I realized that you're probably better at writing guides than than I am, so here's some info about running kexec from the command line:

kexec-hardboot patch

Kexec-hardboot patch is a modification to a kernel that allows it to boot other kernels by putting the new kernel in memory, doing a reboot (hence the "hardboot" part), and jumping to the new kernel. NPJohnson has a great explanation of how it works here.

Doing a hardboot manually on an arm64 device:

1) Get a kexec-tools-arm64 from your device's prebuilt MultiROM zip, or build kexec-tools-arm64 from your device's Multirom source. (Currently kexec-tools-arm64 has hardcoded offsets, so must be built for each device individually. In the future this restriction will be removed and I'll post a precompiled kexec-tools)

To build kexec-tools-arm64:

- Setup a tree to build MultiROM for your device. See https://github.com/Tasssadar/multirom/wiki/Porting-MultiROM. You will need the device tree and multirom source specific to your device.

- run `make multirom` to build kexec-tools-arm64.

- the compiled kexec binary is located at out/target/product/angler/system/xbin/mrom_kexec_static.

- Use adb to transfer that file to your device as kexec.

2) Prepare the kernel Image and ramdisk to hardboot. I recommend using a recovery image. If you've got a boot.img, follow NPJohnson's guide to split it into a kernel zImage and ramdisk.

Code:
unmkbootimg /path/to/your/boot.img

Use adb to transfer the zImage and initramfs.cpio.gz to your device.

3) the command to actually run the kexec is pretty much the same

Code:
su
cd /sdcard/PathToYourFolder/
kexec -l --load-hardboot --ramdisk initramfs.cpio.gz zImage.dtb

To run the new kernel
Code:
kexec -e

My own script for testing kexec is
Code:
#!/bin/bash
echo "pushing"
adb push swag.gz /
adb push system/xbin/mrom_kexec_static /
adb push ramdisk-recovery.img /
adb shell /mrom_kexec_static -l --load-hardboot --mem-min=4 --reuse-cmdline --ramdisk /ramdisk-recovery.img /swag.gz
echo "waiting"
read
echo "execing"
adb shell /mrom_kexec_static -e
where my kernel is named swag.gz and my ramdisk is named ramdisk-recovery.img.


Is there a multirom uninstall zip in the works..I know from using multi on the n6 that when u flash reg twrp over multi and want to delete old ROMs,files,etc ..The uninstall zip was very handy

It does compile when we build MultiROM, so it must be there. zhuowei just needs to put it up in the OP.

Thanks - compiled and uploaded. I haven't tested this though.
 
Last edited:

npjohnson

Senior Member
May 3, 2014
1,560
2,252
St. Augustine, FL
I was going to try to write a guide, then I realized that you're probably better at writing guides than than I am, so here's some info about running kexec from the command line:

kexec-hardboot patch

Kexec-hardboot patch is a modification to a kernel that allows it to boot other kernels by putting the new kernel in memory, doing a reboot (hence the "hardboot" part), and jumping to the new kernel. NPJohnson has a great explanation of how it works here.

Doing a hardboot manually on an arm64 device:

1) Get a kexec-tools-arm64 from your device's prebuilt MultiROM zip, or build kexec-tools-arm64 from your device's Multirom source. (Currently kexec-tools-arm64 has hardcoded offsets, so must be built for each device individually. In the future this restriction will be removed and I'll post a precompiled kexec-tools)

To build kexec-tools-arm64:

- Setup a tree to build MultiROM for your device. See https://github.com/Tasssadar/multirom/wiki/Porting-MultiROM. You will need the device tree and multirom source specific to your device.

- run `make multirom` to build kexec-tools-arm64.

- the compiled kexec binary is located at out/target/product/angler/system/xbin/mrom_kexec_static.

- Use adb to transfer that file to your device as kexec.

2) Prepare the kernel Image and ramdisk to hardboot. I recommend using a recovery image. If you've got a boot.img, follow NPJohnson's guide to split it into a kernel zImage and ramdisk.



Use adb to transfer the zImage and initramfs.cpio.gz to your device.

3) the command to actually run the kexec is pretty much the same

Code:
su
cd /sdcard/PathToYourFolder/
kexec -l --load-hardboot --ramdisk initramfs.cpio.gz zImage.dtb

To run the new kernel
Code:
kexec -e

My own script for testing kexec is
Code:
#!/bin/bash
echo "pushing"
adb push swag.gz /
adb push system/xbin/mrom_kexec_static /
adb push ramdisk-recovery.img /
adb shell /mrom_kexec_static -l --load-hardboot --mem-min=4 --reuse-cmdline --ramdisk /ramdisk-recovery.img /swag.gz
echo "waiting"
read
echo "execing"
adb shell /mrom_kexec_static -e
where my kernel is named swag.gz and my ramdisk is named ramdisk-recovery.img.






Thanks - compiled and uploaded. I haven't tested this though.

Can, and will do! Should have it up this weekend.
 
  • Like
Reactions: davidwilson83

TheStrix

Recognized Developer
May 10, 2014
680
6,372
Mumbai
TheStrix.github.io
I was going to try to write a guide, then I realized that you're probably better at writing guides than than I am, so here's some info about running kexec from the command line:

kexec-hardboot patch

Kexec-hardboot patch is a modification to a kernel that allows it to boot other kernels by putting the new kernel in memory, doing a reboot (hence the "hardboot" part), and jumping to the new kernel. NPJohnson has a great explanation of how it works here.

Doing a hardboot manually on an arm64 device:

1) Get a kexec-tools-arm64 from your device's prebuilt MultiROM zip, or build kexec-tools-arm64 from your device's Multirom source. (Currently kexec-tools-arm64 has hardcoded offsets, so must be built for each device individually. In the future this restriction will be removed and I'll post a precompiled kexec-tools)

To build kexec-tools-arm64:

- Setup a tree to build MultiROM for your device. See https://github.com/Tasssadar/multirom/wiki/Porting-MultiROM. You will need the device tree and multirom source specific to your device.

- run `make multirom` to build kexec-tools-arm64.

- the compiled kexec binary is located at out/target/product/angler/system/xbin/mrom_kexec_static.

- Use adb to transfer that file to your device as kexec.

2) Prepare the kernel Image and ramdisk to hardboot. I recommend using a recovery image. If you've got a boot.img, follow NPJohnson's guide to split it into a kernel zImage and ramdisk.



Use adb to transfer the zImage and initramfs.cpio.gz to your device.

3) the command to actually run the kexec is pretty much the same

Code:
su
cd /sdcard/PathToYourFolder/
kexec -l --load-hardboot --ramdisk initramfs.cpio.gz zImage.dtb

To run the new kernel
Code:
kexec -e

My own script for testing kexec is
Code:
#!/bin/bash
echo "pushing"
adb push swag.gz /
adb push system/xbin/mrom_kexec_static /
adb push ramdisk-recovery.img /
adb shell /mrom_kexec_static -l --load-hardboot --mem-min=4 --reuse-cmdline --ramdisk /ramdisk-recovery.img /swag.gz
echo "waiting"
read
echo "execing"
adb shell /mrom_kexec_static -e
where my kernel is named swag.gz and my ramdisk is named ramdisk-recovery.img.

How about adding dtb.img support for arm64 devices as @Tasssadar did it here for arm devices?
Other arm64 have dtb.img and zImage separately. So would be good for those devices :)
 

Top Liked Posts

  • There are no posts matching your filters.
  • 89
    TLDR:

    This project is no longer actively maintained, see explanation here.

    1: MAKE A BACKUP. Seriously.
    2: Downloads in second post. Flash recovery, then kernel, then MultiROM.
    3: Any issues: please report at https://github.com/multirom-nexus6p/multirom/issues I won't be reading this thread very often.

    35yghmf.png
    Introduction

    This is a port of Tassadar's MultiROM, a multi-boot mod for Nexus 6P. 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.

    This is still very experimental!

    This has been thoroughly tested with the most popular ROM's for the 6P.

    Make backups. Seriously. Please.

    Features:
    * Multiboot any number of Android ROMs
    * Restore nandroid backup as secondary ROM
    * Boot from USB drive attached via USB-C 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 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.​

    Installation
    We have a custom built MultiROM Manager .apk in the downloads section, feel free to try it! (somewhat untested, please report, even if install doesn't work, ROM name customization, etc. should work fine)
    1. Via MultiROM Manager app
    This is the easiest way to install everything MultiROM needs. Install the app found in the next post, 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.
    Accept any Super User request prompts.

    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.

    MultiROM has 3 parts you need to install:

    • Modified recovery (TWRP_multirom_angler_YYYYMMDD.img) - download the IMG file from second post and use fastboot 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.
    • MultiROM (multirom-YYYYMMDD-vXX-angler.zip) - download the ZIP file from second post and flash it in recovery.


    Your current rom will not be erased by the installation.

    Adding ROMs
    1. Android
    Go to recovery, select MultiROM -> Add ROM. Select the ROM's zip file and confirm.​


    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 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.

    Note that swapping roms between internal and external is not supported (yet). Also, after flashing a factory image to the primary system and boot partition, make sure to immediately inject MultiROM before first boot, otherwise the secondary ROMs will be deleted.

    Source code
    MultiROM - https://github.com/multirom-nexus6p/multirom/tree/master (branch master)
    Modified TWRP - https://github.com/multirom-nexus6p/Team-Win-Recovery-Project (branch android-6.0) -- Includes the awesome new Material Dark TWRP theme by @daveyannihilation ! Go thank him, or get his Blackout Domination Layers or CMTE (yes, there are free versions on the Play Store, but you can find those yourself, or donate to a hard worker :) ).
    Kernel w/ kexec-hardboot patch - https://github.com/multirom-nexus6p/android_kernel_huawei_angler/tree/mm -- use angler_defconfig
    Device tree: https://github.com/multirom-nexus6p/TWRP-android_device_huawei_angler/tree/android-6.0-mrom

    Thanks

    This port is based on the hard work of Tassadar, 500 Internal Server Error, Geoff Levand, webgeek1234, Mike Kasick, Npjohnson, Hashbang173, and many others. Thank you.

    Issues

    - None that are known. If you find one that this thread does not know about/hasn't answered (solid rule, read the last three pages of the thread befre reporting an issue), report it on the specific repo in question here.

    - IF YOU GET LOCKED OUT OF YOUR DEVICE: Don't worry! Your data is fine. Simply boot to TWRP, choose 'Advanced' ==> 'Terminal Command' ==> type "rm -Rf /data/system/gatekeeper.*.key" (without the quotes). This is a dirty fix, and should only be used to recover data, not as a permanent solution! After you recover your data, wipe /data (you don't have to wipe Internal Storage), and re-setup the device.

    Please report any unlisted issues to the GitHub bug tracker at https://github.com/multirom-nexus6p/multirom/issues . You'll get faster response if you post there instead of in this thread

    Changelog
    Here

    Downloads
    Downloads
    v33 -- Stable 7:

    MR Installer App: Play Store Link


    MR-TWRP: mr-twrp-recovery-20160528-05-STABLE7.img

    MultiROM Installer Flashable ZIP: multirom-20160514-v33-UNOFFICIAL-angler-STABLE7.zip

    Stock HardBoot Enabled Kernel Flashable ZIP (only your Primary ROM needs this): kernel-hardboot-stock-angler-6.0.1-20160514

    MultiROM Uninstaller Flashable ZIP: multirom_uninstaller.zip

    NOTE:
    Third party kernels with kexec-hardboot support (can be flashed to primary ROM):

    ElementalX
    FrancoKernel
    AK
    PureNexus
    (Alert me if I've missed any!)

    Extra Information
    Unlike some of the other 64-bit MultiROM ports, this port does have kexec-hardboot enabled, which is less risky and speeds up boot into secondary ROM. Anyone porting MultiROM to a Snapdragon 810 device may find the source to be useful. The patch was written by @500 Internal Server Error

    Also, due to recent events on other projects of mine, you are welcome to fork our Github repositories, and use them to port MR to new devices, and as a reference, but, I ask that no one build targeting the 6P using our source and post it publicly (of course you can build for personal use, but distribution is forbidden). Of course, I welcome and ask that anyone who wants to pull request changes in to do so!

    The only acceptable releases based on our source for the 6P is recovery/multirom themes, though, I strongly ask you tag me so I can note the themed version in the OP.

    XDA:DevDB Information
    MultiROM for Nexus 6P, Tool/Utility for the Huawei Nexus 6P

    Contributors
    npjohnson, 500 Internal Server Error
    Source Code: https://github.com/multirom-nexus6p/


    Version Information
    Status: No Longer Updated
    Current Stable Version: v33-05282016-STABLE7
    Stable Release Date: 2016-05-28

    Created 2016-02-12
    Last Updated 2017-09-17
    41
    UPDATE: I've got all the necessary repos brought up to building in a 7.1.1 tree! For those that don't know what that means, It means that MR is functioning on 7.1.1!

    Unfortunately, I've run into an issue. TWRP is unable to bind certain mounts (the most important of which being that even though /data decrypts fine, /data/media/0's bind to /sdcard/ fails for reasons I can't comprehend). This messes up everything else. Hours of debugging have yielded no results, so, I have reached out to some other developers I know in an effort to solve the problem.

    If anyone is able to help me solve the TWRP mounts issue, or wants to update multirom_adbd to 7.1.1 (an optional task which I've opted not to spend my time on), they can build In a Lineage/CM 14.1 tree. For those who can help, but don't have the resources to build, my personal builds can be found here: ods.ninja/Server/Android/angler/MR/

    I WARN those who opt to use builds from the above, I have intentionally*disabled multiboot functions in them (in essence making multirom useless so the average user doesn't use them). These are only to be used if you are able to help work out current TWRP issues.

    Thanks to all, and happy new year.
    34
    I will be updating this soon.

    I've got most of MultiROM's issues worked out, and was planning on waiting until I had it all fully building with clang/7.1.1 sources, but, I'll concede that those things aren't /that/ useful to the end user.

    As of this next release, the recovery will be built in a CM 7.1 tree, and everything else in an Omni 6.0 tree.

    If you don't know what any of the above means... you don't need to. Just know that within the next few weeks I'll be posting a new build.
    22
    I think StarShoot97 is testing the official version of TWRP.

    It has recently been released on TWRP's website: https://dl.twrp.me/angler/twrp-3.0.3-0-angler.img.html

    As for Multirom, I don't know, but there are some new commits on npjohnson's fork: https://github.com/npjohnson/Team-Win-Recovery-Project

    Yup. We have 3.0.3-0 working, with a usable theme (like we had previously), and, N-Block encryption (like on the 6P) works, but, we are still working on FBE support for those on the 6P using the option in developer settings, and Pixels... (hint hint).

    The MultiROM repo is also brought up to support N.

    All that is left is updating multirom_adbd to 7.1.1 so we can get ADB working on the MultiROM boot selection screen, updating Kexec-Tools (and remerging DTB support), then just updating the build system (branches, dependencies, etc.).
Our Apps
Get our official app!
The best way to access XDA on your phone
Nav Gestures
Add swipe gestures to any Android
One Handed Mode
Eases uses one hand with your phone