[MOD][15-NOV-2016] MultiROM 33 + TWRP_3.0.2-0_MultiROM_Edition_2016-11-15 [TestBuild]

Search This thread

nkk71

Inactive Recognized Developer / Contributor
May 26, 2010
8,741
7,571
53
Beirut
mGXztQu.png

PREFACE
I've had this running for quite a while, but due to the amount of time I can dedicate to coding and testing, I've come to the conclusion of sharing it, even if it is not as ready as I would like it to be, and more changes are already on the way.

This is a beta version, so please treat it as such, and have your backup handy.​
Seeing the no-kexec workaround has been in use for quite a while, and also being used on other devices successfully, I consider it a stable release.​

I also ask you to read every single word in the thread (well at least the first four posts), as I continue to elaborate on them.

As a community, it's easier to track down bugs, misbehaviours, etc. when working as a team, so your feedback will be greatly appreciated, but I kindly ask you to be very specific, every little detail counts, and the "it doesn't work" posts will not be taken into account.

Thank you for your understanding.​

For your information, I have successfully tested and multi-booted:
  • ViperOneM9 3.5.0 (in primary)
  • MaximusHD 6.0.0 (directly to secondary)
  • ViperOneM9 3.5.0 (directly to secondary)
  • CM-13.0-20151210-NIGHLTY (directly to secondary)
  • Slim-himaul-5.1.1.beta (directly to secondary)
Notes:
* the supposedly "corrupted/inaccessible" external sdcard on Android 6 (Marshmallow) is not multirom related afaik.
* some of these ROMs take a long time to boot up, well above 10minutes, so patience


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 HTC One M9 (hima). 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, but it is possible that something goes wrong and you will have to flash factory images again. Make backups. Always.​


Now seriously: Warning!
Beware of Dragons, Goblins, Gremlins and lingering primary_boot.img
Due to lack of kexec-hardboot kernel support, I am messing with your boot partition!

Since we lack kernels with kexec-hardboot patch on the M9, I'm using a workaround to bypass that restriction, and although tested successfully on the HTC One M7, HTC One M8 and HTC One M9, there are still several circumstances where things can go wrong.

If you are in doubt, either ask, or avoid it completely; MultiROM has always been a huge hack to begin with, and this is even more of a hack.

Always have a backup ready.

If you do get stuck [trying to (re)boot to primary] (i.e. starring at the boot animation, for a very long time) it is likely you have a lingering primary_boot.img (a gremlin), your primary ROM, should in fact be intact, but the workaround has "confused" the primary kernel, and has an incompatible one being used.
This is usually easily fixable by just restoring your "boot.img" from within TWRP->Restore.... there should be no need to restore everything else.

Please bear in mind, that some ROMs (particularly Sense based ROMs), can will take a long time to boot up, well above 10minutes, so patience!

Installation
Not supported at this time: 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.


2. 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 3 parts (well, it should, but in this case it only has 2) you need to install:

  • Modified recovery (TWRP_multirom-YYYYMMDD-vXX-UNOFFICIAL-hima.img) - download the IMG file from second post and use
    "fastboot flash recovery TWRP-multirom-20151210-v32a-beta1-UNOFFICIAL-hima.img"
    (in download mode, for example)
    Code:
    C:ADB>fastboot flash recovery TWRP-multirom-20151210-v32a-beta1-UNOFFICIAL-hima.img"
    target reported max download size of 800000000 bytes
    sending 'recovery' (40248 KB)...
    OKAY [  2.883s]
    writing 'recovery'...
    (bootloader) HOSD CL#576582
    (bootloader) start@1
    (bootloader) recovery@100%
    (bootloader) Update partition OK
    (bootloader) end@Done
    OKAY [  3.475s]
    finished. total time: 6.359s
    
    C:ADB>fastboot reboot-bootloader
    rebooting into bootloader...
    OKAY [  0.003s]
    finished. total time: 0.003s
  • MultiROM (multirom-YYYYMMDD-vXX-UNOFFICIAL-hima.zip) - download the ZIP file from second post and flash it in the MultiROM Recovery.
    .
    .
  • 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.
    We don't have a patched kernel, so I'm using a workaround.
You current rom will not be erased by the installation.
Download links are in the second post.



Adding ROMs

1. Android
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.​

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 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.
  • In some cases, you might need to flash patched kernel - get coresponding 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.​


Screenshots here


Source code
MultiROM - https://github.com/Tasssadar/multirom (branch master)
Modified TWRP - https://github.com/Tasssadar/Team-Win-Recovery-Project (branch master)
Device files - ....

Everything is here:
https://github.com/multirom-htc
https://github.com/nkk71

XDA:DevDB Information
MultiROM, Tool/Utility for the HTC One (M9)

Contributors
nkk71, Captain_Throwback

Version Information
Status: Stable
Current Stable Version: 33testbuild
Stable Release Date: 2016-11-15

Created 2015-12-10
Last Updated 2016-11-15
 

Attachments

  • HTC_One_M9_MultiROM.png
    HTC_One_M9_MultiROM.png
    228.7 KB · Views: 4,528
  • Screenshot_2015-12-10-16-58-44.png
    Screenshot_2015-12-10-16-58-44.png
    104.5 KB · Views: 5,407
  • Screenshot_2015-12-10-17-04-06.png
    Screenshot_2015-12-10-17-04-06.png
    77.3 KB · Views: 4,639
  • Screenshot_2015-12-10-17-04-27.png
    Screenshot_2015-12-10-17-04-27.png
    97.8 KB · Views: 5,326
  • mrom_screenshot_006.png
    mrom_screenshot_006.png
    47.8 KB · Views: 4,525
  • mrom_screenshot_007.png
    mrom_screenshot_007.png
    54.3 KB · Views: 4,448
  • Screenshot_2015-12-10-17-43-57.png
    Screenshot_2015-12-10-17-43-57.png
    77.8 KB · Views: 4,293
  • Screenshot_20151210-162408.png
    Screenshot_20151210-162408.png
    132.8 KB · Views: 4,239
  • mrom_screenshot_008.png
    mrom_screenshot_008.png
    32.4 KB · Views: 5,088
Last edited:

nkk71

Inactive Recognized Developer / Contributor
May 26, 2010
8,741
7,571
53
Beirut
FAQ and other notes

HTC One M9 - Peculiarities / Bugs
  • There are no kexec-hardboot kernels for the M9, so you need to enable the no-kexec-workaround. Please refer to post 4 for details.
    Deprecated info (used to be a problem in v1 of the workaround)
    Potential problems resulting in lingering primary_boot.img:

    * Reboot from secondary to recovery, flash new primary ROM/kernel (this may be fixable in inject.c, but my first attempt had unexpected results)

    * Reboot from secondary, then fastboot flash boot boot.img

    * While in secondary, use an app (MultiROM, Flashify, etc), which dd's the boot.img

    * Others??



    In short, do NOT try to mess/flash/etc your primary kernel if the last ROM you had booted was a secondary. ... this will result in a "lingering" primary_boot.img
    .
  • A few notes about enabled adb in MultiROM boot menu: having adb enabled in MultiROM boot menu (TWRP->MultiROM->Settings->Enable ADB) may interfere with the ROMs "connection" (MTP, etc), possibly even prevent the ROM from booting (rarely, but I've seen it happen). Since this option is usually only used for debugging, I recommend to keep this option disabled.
    .

Something not working, or you need help debugging

Please provide the following information:
  1. a detailed explanation of the problem
    .
  2. the recovery.log (found in /tmp/recovery.log or by copying it to the sdcard and then copying it to PC)
    .
  3. the link to the thread and name of file (+ which version) you are having problems with
    .
  4. due to the large size of some of these ROMs, I may not have time to download and test them, so please also upload the updater-script (found in ROM.ZIP under /META-INF/com/google/android/)


Device encryption
Since v32, MultiROM supports encryption on this device (it has to be added for each device separately). It works only with Android-based secondary ROMs and the secondary ROMs don't know the device is encrypted, so they would allow you to encrypt the device again - do not do that. If you're using password, pin or pattern for the encryption, MultiROM will ask you for the password on boot. If you're booting the primary ROM, then Android will ask you for the password _again_ - unfortunately, there is no way for me to pass the "unencrypted" status to Android. If you're booting secondary ROM, MultiROM will ask you for the password again after the reboot - that's because I have to unencrypt the /data partition after the ROM's kernel is loaded.

I could omit the second password prompt when booting secondary ROM by temporarily saving the password somewhere, but that's obviously unsafe. So is using encryption with unlocked device though, so I might add this later.​
About security
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.​

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.

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.
 
Last edited:

nkk71

Inactive Recognized Developer / Contributor
May 26, 2010
8,741
7,571
53
Beirut
Downloads

Current Test Builds

All Current Test Builds can be found on androidfilehost under MultiROM TEST BUILDS

You should be using these, not the ones mentioned below!

Definition of Test Builds: These are stable builds which I have and am using (and testing). They contain the most up to date fixes as mentioned in the changelog under <tba>.
  • The main reason I'm calling them "Test Builds", is because they have not gone through extensive testing as what I would usually do for a "release version". I think most people would call them release versions, but I tend to be more conservative.
    .
  • The second reason, they get uploaded to AFH instead of directly here, is two fold:
    1. I'm maintaining the M7, M8, M9 and HTC 10 MultiROM versions, and uploading to AFH is easier and faster for me.
    2. Updating the actual threads and posts, is too time consuming every time I want to push an update.

Changelog and NO_KEXEC 4.1 Information can be found in the HTC 10 MultiROM thread.




1. Main downloads

Modified recovery (based on TWRP): TWRP_3.0.2-0_multirom_hima_20160723-01.img

MultiROM Main ZIP: multirom-20160723-v33d-UNOFFICIAL-hima.zip


Not supported at this time MultiROM Manager Android app: Google Play or link to APK


AndroidFileHost (mirror & old versions): https://www.androidfilehost.com/?w=files&flid=45256

Installation Note: if you were using the previous no-kexec workaround, please reboot to primary ROM first (to get rid of legacy files), then flash TWRP and multirom

2. third-party kernels with kexec-hardboot patch

None exist at the moment, hence the use of the workaround.

3. Uninstaller

MultiROM uninstaller: multirom_uninstaller-20160424-v33c-UNOFFICIAL-hima.zip
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 [RECOVERY][Hima] TWRP touch recovery, but it is not needed - those menus don't do anything if MultiROM is not installed.


Changelog
Code:
MultiROM v33d
=====================
* Fix MultiROM Boot Menu touchscreen for Sprint
* Fix MultiROM Boot Menu boot to recovery & bootloader

MultiROM v33b
=====================
* Updates for Android 6.0 compatibility
* New kernel logging + history (needs to be enabled in TWRP)
* Added no kexec-hardboot workaround version 2
  [I][B](needs to be enabled in TWRP)[/B][/I]

MultiROM v32a-beta1
=======================
* initial port for HTC One M9 (hima)
[B]* Note: encryption not supported at this time[/B]


Recoveries:
Code:
2016-07-23 (33d)
=====================
* Rebased on android-6.0 tree
  - fixes TWRP progress bar
* Includes official TWRP commits up to Jun 9, 2016
* Add support for package_extract_file("system.img", <block device>)

2016-04-19 (33c)
=====================
* Fixed external sdcard ext4 partition flashing
  [I]Note: booting from OTG may be broken[/I] :(

2016-04-17 (33b)
=====================
* Rebase to TWRP 3.0.2
* Use new stock theme made by z31s1g - thanks!!!
* New partition selector
* Fix ZIP selector being set to wrong storage after flashing ZIP to a
  secondary ROM
* Fixes for 6.0 compatibility
* Fixes for SuperSU compatibility. Use BETA 2.67-20160203160253 (
  [URL="http://bit.ly/m_su"]http://bit.ly/m_su[/URL] ) or newer!
* Fixes for several installer scripts using non-conventional methods
  when installing systemless root
* Fix inject multriom checkmark not showing on startup
* New option to enable kernel logging + history for multirom
* New advanced options for no kexec-hardboot workaround version 2
  [I](yes the Info page is missing)[/I]
  [I]refer to [URL="http://xdaforums.com/showthread.php?p=64248526&postcount=4"]post 4[/URL] for detailed info[/I]
* Add progress tracking in multirom 'restore' install

2015-12-11 (32a-beta02)
=======================
* fixed access to ext4 partition on external sdcard

2015-12-10 (32a-beta1)
=======================
* initial port for HTC One M9 (hima)
 
Last edited:

nkk71

Inactive Recognized Developer / Contributor
May 26, 2010
8,741
7,571
53
Beirut
Enabling no-kexec workaround
As of this version you need to manually enable the no-kexec workaround.

Go to TWRP -> MultiROM -> Settings
2dhxjrd.jpg


and enable the No-KEXEC workaround option
33cbuo6.jpg


once you do you'll also have the option for ADVanced settings, please see below for a detailed description, though in most cases the default should suffice.​





Explanation of the no-kexec workaround advanced options
1znli87.jpg

(the Info page is supposed to provide the same information as here, but I haven't added that yet)


1- Use no-kexec only when needed
This should be the default for most users, the other options are more intended for advanced uses (kernel debugging, and such).

If MultiROM detects a kexec-hardboot enabled kernel in primary slot, it will use the standard kexec method to boot the secondary. If on the other hand it does not detect that the kernel supports kexec-hardboot then it will use the workaround.​



2- ... but also ask for confirmation before booting
Same as option 1 above, but in addition you will be presented with a confirmation message, if the workaround is about to be used:
s3dld3.jpg



3- Ask whether to kexec or use no-kexec on booting
If the kernel in primary slot does support kexec-hardboot'ing then you will be presented with a choice of which method to use
mrdd8o.jpg


If the kernel does not support kexec-hardboot then you'll be informed as in option 2 above​



4- Always force using no-kexec workaround
Forces the no-kexec workaround to be used, even if the kernel in primary slot has kexec-hardboot support​



Options 2 and 3, always present the user with a GUI confirmation, whereas option 1 and 4 will act as instructed without prompting the user.





Visual feedback provided by the Booting... card
Regular kexec-hardboot boot
1zmef0m.jpg




Booting using no-kexec-workaround
2h83249.jpg




Booting into primary, while the previous rom was using the no-kexec-workaround
(in which case the real primary needs to be restored first)
11mgob8.jpg



How does all this work, etc

The workaround:
  • MultiROM TWRP recovery works, and is able to flash ROMs to secondary
  • MultiROM in essence works (in particular, able to change the mount points during bootup)
  • what does not work is being able to use the secondary ROM's kernel (due to the lack of kexec-hardboot kernel and tools)

So how do we deal with booting any ROM if we can't use the proper kernel for the ROM?
Easy :eek: :
Upon selection of the ROM during MultiROM boot menu, we do the following:
  1. "flash" secondary boot.img to primary partition slot
  2. initiate a full reboot (secondary boot.img is in primary slot)
  3. let the ROM auto-boot up on second boot

The good part:
  • It works.... has been for quite some time, but I kinda kept it hidden
    .
  • Every secondary ROM has a boot.img file we can easily access to use the workaround; when you flash a ROM in MultiROM TWRP, not only are the "virtual" system, data, and cache partitions created, but also the boot.img.
    The secondary ROMs' boot.img will be found /data/media/0/multirom/<name of rom>/boot.img or if it's on your external ext4 in the appropriate rom folder
    We use that file and flash it to primary real boot partition and then upon second boot, the correct boot.img is in place for the correct ROM.

The bad part:
Note: the below needs to be revised as the "lingering primary_boot.img" is no longer an issue, however to do my affection for it, I can't just delete all references to it :p

  • What we (yes, we) have come to affectionately call the "lingering primary_boot.img" this should now be taken care of, as much as possible
    .
  • Unlike secondary ROMs, the primary ROM does not have a boot.img file... since it is the primary ROM, the boot.img should always be in the real boot partition, since MultiROM expects the primary kernel to have kexec-hardboot capability, but it does not, so I just go ahead and mess with your primary boot partition.
    Since we have no "boot.img" file for the primary, my workaround makes a backup of the kernel and names it primary_boot.img
    This backup is created and/or used only under certain situations, for example (this is not an exhaustive list):
    • the last ROM was primary, and we want to boot a secondary ---> backup the primary boot.img, flash secondary one
      .
    • the last ROM was secondary, and we're booting another secondary ---> just flash the secondary boot.img
      .
    • the last ROM was secondary, and want to boot the primary ROM --> restore the primary_boot.img we backed up
      .
      ^^ and here lies the problem, we cannot actually say if the backup we created is actually correct for the primary ROM.... ideally it is, but there are easy ways to break that UPDATE: not so easy to break it all, anymore :)

      one very simple example (as mentioned in the FAQs) would be:
      ==> Reboot from secondary to recovery, flash new primary ROM/kernel ---> the backup of primary_boot.img will still be there, MultiROM will still think the last ROM was a secondary, and therefore restore the backup; which will result in a non-booting primary ROM since the backed up kernel doesnt actually belong to this ROM
      this is what I call a "lingering primary_boot.img"

      this is just one simple example, but it can happen for a variety of reasons... interrupted boots,
      some app/method flashed a new kernel, etc.

The solution for the "lingering primary_boot.img":
  1. Delete (if it's there): /data/media/0/multirom/last_rom_was_2nd no longer used
    [*]Delete (if it's there): /data/media/0/multirom/primary_boot.img
  2. Reflash or restore the correct boot.img for your primary ROM


New safe guards to avoid a "lingering primary_boot.img":
  1. TWRP will restore the primary boot.img when entering recovery
  2. MultiROM identifies whether the boot.img currently in primary slot is secondary, by checking the boot.img itself;
    it no longer relies on a separate file (last_rom_was_2nd)
  3. If the boot.img in primary slot is not tagged as a secondary, it is considered a new primary boot.img

Long story short: the difference between kexec and no-kexec-workaround
Usual kexec-hardboot MultiROM
  1. Select secondary ROM
  2. MultiROM detects a boot.img
  3. MultiROM reads the secondary boot.img into memory
  4. MultiROM initiates a kexec second boot but into the secondary boot.img from above
  5. MultiROM continues
No-kexec-workaround MultiROM
  1. Select secondary ROM
  2. MultiROM detects a boot.img
  3. MultiROM flashes the secondary boot.img into the primary boot partition
  4. MultiROM initiates a full second boot but with the secondary boot.img in the real boot partition
  5. MultiROM continues as usual

so the difference is in point 3... whereas normal kexec'ing loads the secondary boot.img into memory and goes from there, the workaround, actually flashes it to the real primary boot partition... and continues normally from there


Small note regarding encrypted devices using the no-kexec workaround
Since I dont use encryption, I haven't tested this to much extent, but I believe that there is a BOOT PRIMARY ROM option, which you can choose to boot into Internal without decrypting the device first.

Please be aware that this should not be used, if: the last booted ROM was a secondary using the no-kexec workaround.

The reason is that the backup of the primary_boot.img, is stored in the multirom folder, so for the no-kexec to be able to restore it, it needs access to the /data partition:
Booting into primary, while the previous rom was using the no-kexec-workaround
(in which case the real primary needs to be restored first)
11mgob8.jpg
It's not too much of a big deal, because when the no-kexec workaround encounters an error, it reboots to recovery (and since recovery will restore the primary_boot.img), another reboot would be fine.

I do however (until I address this particular issue), encourage you not to use the BOOT PRIMARY ROM option, but instead decrypt the device, and then select the Internal ROM to boot.


Will this remain a "beta" version?
Most probably YES it will.... MultiROM is supposed to work with a kexec-hardboot enabled kernel; since that does not exist (at this time), on arm64 devices, I am using a workaround; since it doesn't exist and doesn't work, just work around it, if possible ... (call it "non-linear thinking" thinking if you wish)
until such time as the original author sees fit, or I decide to rename as "stable" (imho it is), it will remain called a "beta"

I have extensively tested this on the HTC One M7, the M8, and the M9 and have not found any side effects, so as of version 33b (2016-04-16), I consider this a stable release.


Devices using the no-kexec-workaround successfully
MultiROM threads for:
 
Last edited:

qriozum

Senior Member
Sep 13, 2009
715
290
Delete

--
wysłane z HTCOne (m9) przez Tapatalk v5.4.1
 
Last edited:

throcker

Senior Member
Feb 1, 2012
923
177
33
cagliari
Didn't flar2 add hexec path to elementalx kernel??
Does your workaround affect performance or functionalities in any way?
 

nkk71

Inactive Recognized Developer / Contributor
May 26, 2010
8,741
7,571
53
Beirut
Dear All,

This is a highly experimental build, it is not meant for people who want a one-click-does-it-all solution, please read the OP, in particular:

I also ask you to read every single word in the thread (well at least the first four posts), as I continue to elaborate on them.

Thank you :rolleyes:


In case, I wasn't clear enough, this is an "experiment", it works for me (mostly, except some bugs I've mentioned), if you want to join, you are more than welcome (at your own discretion and risk), otherwise, I can fully understand you being not comfy using it.
 

throcker

Senior Member
Feb 1, 2012
923
177
33
cagliari
Dear All,

This is a highly experimental build, it is not meant for people who want a one-click-does-it-all solution, please read the OP, in particular:



Thank you :rolleyes:


In case, I wasn't clear enough, this is an "experiment", it works for me (mostly, except some bugs I've mentioned), if you want to join, you are more than welcome (at your own discretion and risk), otherwise, I can fully understand you being not comfy using it.

is there a method to uninstall the mod?
 

nkk71

Inactive Recognized Developer / Contributor
May 26, 2010
8,741
7,571
53
Beirut
is there a method to uninstall the mod?

yes of course, plenty, probably the easiest would be:

1- reflash "normal" TWRP to get rid of this one
2- restore backup (actually you only need to restore the boot.img)

you can delete the multirom folder manually, until I post an uninstaller
 

throcker

Senior Member
Feb 1, 2012
923
177
33
cagliari
yes of course, plenty, probably the easiest would be:

1- reflash "normal" TWRP to get rid of this one
2- restore backup (actually you only need to restore the boot.img)

you can delete the multirom folder manually, until I post an uninstaller

many thanks. I just read somewhere elementalx kernel has kexec patch...am I wrong?
I read the entire op, i know about your workaround, is just a question to help and maybe get things easier for you (no more hacks)
 

nkk71

Inactive Recognized Developer / Contributor
May 26, 2010
8,741
7,571
53
Beirut
many thanks. I just read somewhere elementalx kernel has kexec patch...am I wrong?
I read the entire op, i know about your workaround, is just a question to help and maybe get things easier for you (no more hacks)
Feel free to ask any kernel dev about any of the following:
* kexec
* kexec-tools
* kexec-hardboot
* kexec-hb-tools
on arm64

I did not create this to make things easier on myself, so either

1- feel free to correct me, and point me in the right direction

2- stick to the thread

Just for info: thinking/creating/coding and testing this ("make it easy") workaround
wasnt easy at all

Please stick to the thread, I think my information and feedback requests were specific enough, so can we stick with them.

Sent from my HTC One M9 using Tapatalk
 

grim489

Senior Member
Jan 4, 2011
380
87
I apologize if I missed this in the thread, I read through but have a tendency to overlook things I'm actually looking for. Is touch working for you guys in the rom selection menu?

Just wondering, I don't mind using volume keys to select

Sent from my HTC One M9 using Tapatalk
 

nkk71

Inactive Recognized Developer / Contributor
May 26, 2010
8,741
7,571
53
Beirut
I apologize if I missed this in the thread, I read through but have a tendency to overlook things I'm actually looking for. Is touch working for you guys in the rom selection menu?

Just wondering, I don't mind using volume keys to select

Sent from my HTC One M9 using Tapatalk

Ah yes, one of those bugs

touch generally works, but is dependant on how the kernel was built, as @Captain_Throwback mentioned, if SECURE_TOUCH is not specified then touch wont work

which ROM is that?
 
  • Like
Reactions: grim489

Top Liked Posts

  • There are no posts matching your filters.
  • 45
    Enabling no-kexec workaround
    As of this version you need to manually enable the no-kexec workaround.

    Go to TWRP -> MultiROM -> Settings
    2dhxjrd.jpg


    and enable the No-KEXEC workaround option
    33cbuo6.jpg


    once you do you'll also have the option for ADVanced settings, please see below for a detailed description, though in most cases the default should suffice.​





    Explanation of the no-kexec workaround advanced options
    1znli87.jpg

    (the Info page is supposed to provide the same information as here, but I haven't added that yet)


    1- Use no-kexec only when needed
    This should be the default for most users, the other options are more intended for advanced uses (kernel debugging, and such).

    If MultiROM detects a kexec-hardboot enabled kernel in primary slot, it will use the standard kexec method to boot the secondary. If on the other hand it does not detect that the kernel supports kexec-hardboot then it will use the workaround.​



    2- ... but also ask for confirmation before booting
    Same as option 1 above, but in addition you will be presented with a confirmation message, if the workaround is about to be used:
    s3dld3.jpg



    3- Ask whether to kexec or use no-kexec on booting
    If the kernel in primary slot does support kexec-hardboot'ing then you will be presented with a choice of which method to use
    mrdd8o.jpg


    If the kernel does not support kexec-hardboot then you'll be informed as in option 2 above​



    4- Always force using no-kexec workaround
    Forces the no-kexec workaround to be used, even if the kernel in primary slot has kexec-hardboot support​



    Options 2 and 3, always present the user with a GUI confirmation, whereas option 1 and 4 will act as instructed without prompting the user.





    Visual feedback provided by the Booting... card
    Regular kexec-hardboot boot
    1zmef0m.jpg




    Booting using no-kexec-workaround
    2h83249.jpg




    Booting into primary, while the previous rom was using the no-kexec-workaround
    (in which case the real primary needs to be restored first)
    11mgob8.jpg



    How does all this work, etc

    The workaround:
    • MultiROM TWRP recovery works, and is able to flash ROMs to secondary
    • MultiROM in essence works (in particular, able to change the mount points during bootup)
    • what does not work is being able to use the secondary ROM's kernel (due to the lack of kexec-hardboot kernel and tools)

    So how do we deal with booting any ROM if we can't use the proper kernel for the ROM?
    Easy :eek: :
    Upon selection of the ROM during MultiROM boot menu, we do the following:
    1. "flash" secondary boot.img to primary partition slot
    2. initiate a full reboot (secondary boot.img is in primary slot)
    3. let the ROM auto-boot up on second boot

    The good part:
    • It works.... has been for quite some time, but I kinda kept it hidden
      .
    • Every secondary ROM has a boot.img file we can easily access to use the workaround; when you flash a ROM in MultiROM TWRP, not only are the "virtual" system, data, and cache partitions created, but also the boot.img.
      The secondary ROMs' boot.img will be found /data/media/0/multirom/<name of rom>/boot.img or if it's on your external ext4 in the appropriate rom folder
      We use that file and flash it to primary real boot partition and then upon second boot, the correct boot.img is in place for the correct ROM.

    The bad part:
    Note: the below needs to be revised as the "lingering primary_boot.img" is no longer an issue, however to do my affection for it, I can't just delete all references to it :p

    • What we (yes, we) have come to affectionately call the "lingering primary_boot.img" this should now be taken care of, as much as possible
      .
    • Unlike secondary ROMs, the primary ROM does not have a boot.img file... since it is the primary ROM, the boot.img should always be in the real boot partition, since MultiROM expects the primary kernel to have kexec-hardboot capability, but it does not, so I just go ahead and mess with your primary boot partition.
      Since we have no "boot.img" file for the primary, my workaround makes a backup of the kernel and names it primary_boot.img
      This backup is created and/or used only under certain situations, for example (this is not an exhaustive list):
      • the last ROM was primary, and we want to boot a secondary ---> backup the primary boot.img, flash secondary one
        .
      • the last ROM was secondary, and we're booting another secondary ---> just flash the secondary boot.img
        .
      • the last ROM was secondary, and want to boot the primary ROM --> restore the primary_boot.img we backed up
        .
        ^^ and here lies the problem, we cannot actually say if the backup we created is actually correct for the primary ROM.... ideally it is, but there are easy ways to break that UPDATE: not so easy to break it all, anymore :)

        one very simple example (as mentioned in the FAQs) would be:
        ==> Reboot from secondary to recovery, flash new primary ROM/kernel ---> the backup of primary_boot.img will still be there, MultiROM will still think the last ROM was a secondary, and therefore restore the backup; which will result in a non-booting primary ROM since the backed up kernel doesnt actually belong to this ROM
        this is what I call a "lingering primary_boot.img"

        this is just one simple example, but it can happen for a variety of reasons... interrupted boots,
        some app/method flashed a new kernel, etc.

    The solution for the "lingering primary_boot.img":
    1. Delete (if it's there): /data/media/0/multirom/last_rom_was_2nd no longer used
      [*]Delete (if it's there): /data/media/0/multirom/primary_boot.img
    2. Reflash or restore the correct boot.img for your primary ROM


    New safe guards to avoid a "lingering primary_boot.img":
    1. TWRP will restore the primary boot.img when entering recovery
    2. MultiROM identifies whether the boot.img currently in primary slot is secondary, by checking the boot.img itself;
      it no longer relies on a separate file (last_rom_was_2nd)
    3. If the boot.img in primary slot is not tagged as a secondary, it is considered a new primary boot.img

    Long story short: the difference between kexec and no-kexec-workaround
    Usual kexec-hardboot MultiROM
    1. Select secondary ROM
    2. MultiROM detects a boot.img
    3. MultiROM reads the secondary boot.img into memory
    4. MultiROM initiates a kexec second boot but into the secondary boot.img from above
    5. MultiROM continues
    No-kexec-workaround MultiROM
    1. Select secondary ROM
    2. MultiROM detects a boot.img
    3. MultiROM flashes the secondary boot.img into the primary boot partition
    4. MultiROM initiates a full second boot but with the secondary boot.img in the real boot partition
    5. MultiROM continues as usual

    so the difference is in point 3... whereas normal kexec'ing loads the secondary boot.img into memory and goes from there, the workaround, actually flashes it to the real primary boot partition... and continues normally from there


    Small note regarding encrypted devices using the no-kexec workaround
    Since I dont use encryption, I haven't tested this to much extent, but I believe that there is a BOOT PRIMARY ROM option, which you can choose to boot into Internal without decrypting the device first.

    Please be aware that this should not be used, if: the last booted ROM was a secondary using the no-kexec workaround.

    The reason is that the backup of the primary_boot.img, is stored in the multirom folder, so for the no-kexec to be able to restore it, it needs access to the /data partition:
    Booting into primary, while the previous rom was using the no-kexec-workaround
    (in which case the real primary needs to be restored first)
    11mgob8.jpg
    It's not too much of a big deal, because when the no-kexec workaround encounters an error, it reboots to recovery (and since recovery will restore the primary_boot.img), another reboot would be fine.

    I do however (until I address this particular issue), encourage you not to use the BOOT PRIMARY ROM option, but instead decrypt the device, and then select the Internal ROM to boot.


    Will this remain a "beta" version?
    Most probably YES it will.... MultiROM is supposed to work with a kexec-hardboot enabled kernel; since that does not exist (at this time), on arm64 devices, I am using a workaround; since it doesn't exist and doesn't work, just work around it, if possible ... (call it "non-linear thinking" thinking if you wish)
    until such time as the original author sees fit, or I decide to rename as "stable" (imho it is), it will remain called a "beta"

    I have extensively tested this on the HTC One M7, the M8, and the M9 and have not found any side effects, so as of version 33b (2016-04-16), I consider this a stable release.


    Devices using the no-kexec-workaround successfully
    MultiROM threads for:
    34
    mGXztQu.png

    PREFACE
    I've had this running for quite a while, but due to the amount of time I can dedicate to coding and testing, I've come to the conclusion of sharing it, even if it is not as ready as I would like it to be, and more changes are already on the way.

    This is a beta version, so please treat it as such, and have your backup handy.​
    Seeing the no-kexec workaround has been in use for quite a while, and also being used on other devices successfully, I consider it a stable release.​

    I also ask you to read every single word in the thread (well at least the first four posts), as I continue to elaborate on them.

    As a community, it's easier to track down bugs, misbehaviours, etc. when working as a team, so your feedback will be greatly appreciated, but I kindly ask you to be very specific, every little detail counts, and the "it doesn't work" posts will not be taken into account.

    Thank you for your understanding.​

    For your information, I have successfully tested and multi-booted:
    • ViperOneM9 3.5.0 (in primary)
    • MaximusHD 6.0.0 (directly to secondary)
    • ViperOneM9 3.5.0 (directly to secondary)
    • CM-13.0-20151210-NIGHLTY (directly to secondary)
    • Slim-himaul-5.1.1.beta (directly to secondary)
    Notes:
    * the supposedly "corrupted/inaccessible" external sdcard on Android 6 (Marshmallow) is not multirom related afaik.
    * some of these ROMs take a long time to boot up, well above 10minutes, so patience


    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 HTC One M9 (hima). 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, but it is possible that something goes wrong and you will have to flash factory images again. Make backups. Always.​


    Now seriously: Warning!
    Beware of Dragons, Goblins, Gremlins and lingering primary_boot.img
    Due to lack of kexec-hardboot kernel support, I am messing with your boot partition!

    Since we lack kernels with kexec-hardboot patch on the M9, I'm using a workaround to bypass that restriction, and although tested successfully on the HTC One M7, HTC One M8 and HTC One M9, there are still several circumstances where things can go wrong.

    If you are in doubt, either ask, or avoid it completely; MultiROM has always been a huge hack to begin with, and this is even more of a hack.

    Always have a backup ready.

    If you do get stuck [trying to (re)boot to primary] (i.e. starring at the boot animation, for a very long time) it is likely you have a lingering primary_boot.img (a gremlin), your primary ROM, should in fact be intact, but the workaround has "confused" the primary kernel, and has an incompatible one being used.
    This is usually easily fixable by just restoring your "boot.img" from within TWRP->Restore.... there should be no need to restore everything else.

    Please bear in mind, that some ROMs (particularly Sense based ROMs), can will take a long time to boot up, well above 10minutes, so patience!

    Installation
    Not supported at this time: 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.


    2. 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 3 parts (well, it should, but in this case it only has 2) you need to install:

    • Modified recovery (TWRP_multirom-YYYYMMDD-vXX-UNOFFICIAL-hima.img) - download the IMG file from second post and use
      "fastboot flash recovery TWRP-multirom-20151210-v32a-beta1-UNOFFICIAL-hima.img"
      (in download mode, for example)
      Code:
      C:ADB>fastboot flash recovery TWRP-multirom-20151210-v32a-beta1-UNOFFICIAL-hima.img"
      target reported max download size of 800000000 bytes
      sending 'recovery' (40248 KB)...
      OKAY [  2.883s]
      writing 'recovery'...
      (bootloader) HOSD CL#576582
      (bootloader) start@1
      (bootloader) recovery@100%
      (bootloader) Update partition OK
      (bootloader) end@Done
      OKAY [  3.475s]
      finished. total time: 6.359s
      
      C:ADB>fastboot reboot-bootloader
      rebooting into bootloader...
      OKAY [  0.003s]
      finished. total time: 0.003s
    • MultiROM (multirom-YYYYMMDD-vXX-UNOFFICIAL-hima.zip) - download the ZIP file from second post and flash it in the MultiROM Recovery.
      .
      .
    • 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.
      We don't have a patched kernel, so I'm using a workaround.
    You current rom will not be erased by the installation.
    Download links are in the second post.



    Adding ROMs

    1. Android
    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.​

    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 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.
    • In some cases, you might need to flash patched kernel - get coresponding 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.​


    Screenshots here


    Source code
    MultiROM - https://github.com/Tasssadar/multirom (branch master)
    Modified TWRP - https://github.com/Tasssadar/Team-Win-Recovery-Project (branch master)
    Device files - ....

    Everything is here:
    https://github.com/multirom-htc
    https://github.com/nkk71

    XDA:DevDB Information
    MultiROM, Tool/Utility for the HTC One (M9)

    Contributors
    nkk71, Captain_Throwback

    Version Information
    Status: Stable
    Current Stable Version: 33testbuild
    Stable Release Date: 2016-11-15

    Created 2015-12-10
    Last Updated 2016-11-15
    13
    Downloads

    Current Test Builds

    All Current Test Builds can be found on androidfilehost under MultiROM TEST BUILDS

    You should be using these, not the ones mentioned below!

    Definition of Test Builds: These are stable builds which I have and am using (and testing). They contain the most up to date fixes as mentioned in the changelog under <tba>.
    • The main reason I'm calling them "Test Builds", is because they have not gone through extensive testing as what I would usually do for a "release version". I think most people would call them release versions, but I tend to be more conservative.
      .
    • The second reason, they get uploaded to AFH instead of directly here, is two fold:
      1. I'm maintaining the M7, M8, M9 and HTC 10 MultiROM versions, and uploading to AFH is easier and faster for me.
      2. Updating the actual threads and posts, is too time consuming every time I want to push an update.

    Changelog and NO_KEXEC 4.1 Information can be found in the HTC 10 MultiROM thread.




    1. Main downloads

    Modified recovery (based on TWRP): TWRP_3.0.2-0_multirom_hima_20160723-01.img

    MultiROM Main ZIP: multirom-20160723-v33d-UNOFFICIAL-hima.zip


    Not supported at this time MultiROM Manager Android app: Google Play or link to APK


    AndroidFileHost (mirror & old versions): https://www.androidfilehost.com/?w=files&flid=45256

    Installation Note: if you were using the previous no-kexec workaround, please reboot to primary ROM first (to get rid of legacy files), then flash TWRP and multirom

    2. third-party kernels with kexec-hardboot patch

    None exist at the moment, hence the use of the workaround.

    3. Uninstaller

    MultiROM uninstaller: multirom_uninstaller-20160424-v33c-UNOFFICIAL-hima.zip
    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 [RECOVERY][Hima] TWRP touch recovery, but it is not needed - those menus don't do anything if MultiROM is not installed.


    Changelog
    Code:
    MultiROM v33d
    =====================
    * Fix MultiROM Boot Menu touchscreen for Sprint
    * Fix MultiROM Boot Menu boot to recovery & bootloader
    
    MultiROM v33b
    =====================
    * Updates for Android 6.0 compatibility
    * New kernel logging + history (needs to be enabled in TWRP)
    * Added no kexec-hardboot workaround version 2
      [I][B](needs to be enabled in TWRP)[/B][/I]
    
    MultiROM v32a-beta1
    =======================
    * initial port for HTC One M9 (hima)
    [B]* Note: encryption not supported at this time[/B]


    Recoveries:
    Code:
    2016-07-23 (33d)
    =====================
    * Rebased on android-6.0 tree
      - fixes TWRP progress bar
    * Includes official TWRP commits up to Jun 9, 2016
    * Add support for package_extract_file("system.img", <block device>)
    
    2016-04-19 (33c)
    =====================
    * Fixed external sdcard ext4 partition flashing
      [I]Note: booting from OTG may be broken[/I] :(
    
    2016-04-17 (33b)
    =====================
    * Rebase to TWRP 3.0.2
    * Use new stock theme made by z31s1g - thanks!!!
    * New partition selector
    * Fix ZIP selector being set to wrong storage after flashing ZIP to a
      secondary ROM
    * Fixes for 6.0 compatibility
    * Fixes for SuperSU compatibility. Use BETA 2.67-20160203160253 (
      [URL="http://bit.ly/m_su"]http://bit.ly/m_su[/URL] ) or newer!
    * Fixes for several installer scripts using non-conventional methods
      when installing systemless root
    * Fix inject multriom checkmark not showing on startup
    * New option to enable kernel logging + history for multirom
    * New advanced options for no kexec-hardboot workaround version 2
      [I](yes the Info page is missing)[/I]
      [I]refer to [URL="http://xdaforums.com/showthread.php?p=64248526&postcount=4"]post 4[/URL] for detailed info[/I]
    * Add progress tracking in multirom 'restore' install
    
    2015-12-11 (32a-beta02)
    =======================
    * fixed access to ext4 partition on external sdcard
    
    2015-12-10 (32a-beta1)
    =======================
    * initial port for HTC One M9 (hima)
    8
    FAQ and other notes

    HTC One M9 - Peculiarities / Bugs
    • There are no kexec-hardboot kernels for the M9, so you need to enable the no-kexec-workaround. Please refer to post 4 for details.
      Deprecated info (used to be a problem in v1 of the workaround)
      Potential problems resulting in lingering primary_boot.img:

      * Reboot from secondary to recovery, flash new primary ROM/kernel (this may be fixable in inject.c, but my first attempt had unexpected results)

      * Reboot from secondary, then fastboot flash boot boot.img

      * While in secondary, use an app (MultiROM, Flashify, etc), which dd's the boot.img

      * Others??



      In short, do NOT try to mess/flash/etc your primary kernel if the last ROM you had booted was a secondary. ... this will result in a "lingering" primary_boot.img
      .
    • A few notes about enabled adb in MultiROM boot menu: having adb enabled in MultiROM boot menu (TWRP->MultiROM->Settings->Enable ADB) may interfere with the ROMs "connection" (MTP, etc), possibly even prevent the ROM from booting (rarely, but I've seen it happen). Since this option is usually only used for debugging, I recommend to keep this option disabled.
      .

    Something not working, or you need help debugging

    Please provide the following information:
    1. a detailed explanation of the problem
      .
    2. the recovery.log (found in /tmp/recovery.log or by copying it to the sdcard and then copying it to PC)
      .
    3. the link to the thread and name of file (+ which version) you are having problems with
      .
    4. due to the large size of some of these ROMs, I may not have time to download and test them, so please also upload the updater-script (found in ROM.ZIP under /META-INF/com/google/android/)


    Device encryption
    Since v32, MultiROM supports encryption on this device (it has to be added for each device separately). It works only with Android-based secondary ROMs and the secondary ROMs don't know the device is encrypted, so they would allow you to encrypt the device again - do not do that. If you're using password, pin or pattern for the encryption, MultiROM will ask you for the password on boot. If you're booting the primary ROM, then Android will ask you for the password _again_ - unfortunately, there is no way for me to pass the "unencrypted" status to Android. If you're booting secondary ROM, MultiROM will ask you for the password again after the reboot - that's because I have to unencrypt the /data partition after the ROM's kernel is loaded.

    I could omit the second password prompt when booting secondary ROM by temporarily saving the password somewhere, but that's obviously unsafe. So is using encryption with unlocked device though, so I might add this later.​
    About security
    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.​

    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.

    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.
    6
    Application "MultiROM" not working is HTCOne m9:
    View attachment 3571948

    --
    wysłane z HTCOne (m9) przez Tapatalk v5.4.1
    Somebody didn't read the OP . . .
    elronds-facepalm.jpg