[MOD] MultiROM v33

Search This thread

npjohnson

Recognized Developer
  • 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
     
    Last edited:

    npjohnson

    Recognized Developer
  • v33 beta 1:

    Recovery: https://multirom-nexus6p.github.io/recovery-20160211.img

    MultiROM Installer: https://multirom-nexus6p.github.io/multirom-20160211-v33-UNOFFICIAL-angler.zip

    Patched kernel: only the primary ROM needs this. Secondary ROM's kernels do not need patching.

    Stock 6.0.1 kernel: https://multirom-nexus6p.github.io/kernel-hardboot-stock-angler-6.0.1-20160211.zip

    Congrats on this man! The Hardboot Patch will be indefinitely helpful for ARM64 users in the future!

    No noticable bugs so far. I'm going to build MR with USB support sometime this weekend, will test, and get back to you.

    Something we are going to have to deal with that other devices won't is the /vendor partition on the 6P. For example, user install Layers Overlay on stock ROM, now CM based secondary won't boot due to conflicting Layers/CM theme. Th8s wasn't a problem on the Nexus 6 because it didn't have a /vendor, but simply had a /system/vendor for each ROM.

    A simple way we could bypass this is to set up a virtual /vendor (like we already have for /boot) and give the option when making the ROM to use a virtual /vendor, and then if the user opts to do so, they could base it off a vendor.IMG, or their current /vendor. If this doesn't sound like something you'd want to do, we could also tell the secondary ROMs to look at /system/vendor, and not ever mount /vendor (though this'd require that MR inject the current /vendor partition contents into /system/vendor on Secondary ROM flash.

    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.

    Again, Congrats!
     
    Jun 29, 2014
    38
    311
    A simple way we could bypass this is to set up a virtual /vendor (like we already have for /boot) and give the option when making the ROM to use a virtual /vendor
    This should be doable - I can look at how MultiROM mounts the system partition and try to do the same for vendor. However, I'm not sure if there is a need for that since CyanogenMod didn't ship with any custom vendor binaries. I'll look into it when a ROM actually needs it.
    Could you make a separate thread in the Original-Development about the HardBoot patch, and irlts inner workings?
    Sure: I'll post a guide on porting it to other devices. The TLDR version:

    - It's based on Geoff Levand's arm64 kexec patch as adapted by webgeek1234 to build on Android

    - the hardboot part works by:

    kexec call is made to load kernel, ramdisk, and device tree at specified addresses

    kernel makes a temporary copy of this data in RAM that won't be overwritten at reboot, along with some code to copy it to the final positions

    kernel reboots

    Hardboot kernel checks that a hardboot is required, and jumps to the copier code

    Copier code copies the new kernel to the final address and jumps to it

    New kernel boots.

    The extra copying code is needed since on 32-bit ARM the kernel can copy itself to the desired position; on arm64 it can't and extra code is needed. In addition, on 32-bit ARM the position of the ramdisk and device tree doesn't seem to matter; on the Nexus 6P however they have to be placed at the same location that the real bootloader uses.
     

    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