FORUMS
Remove All Ads from XDA

[MOD] Multirom for Shield Portable

889 posts
Thanks Meter: 1,615
 
By Steel01, Senior Member on 23rd April 2015, 12:19 AM
Post Reply Email Thread
Introduction
MultiROM is one-of-a-kind multi-boot mod. It can boot any Android ROM as well as other systems like Ubuntu Touch, once they are ported to that device. Besides booting from device's internal memory, MultiROM can boot from USB drive connected to the device via OTG cable. The main part of MultiROM is a boot manager, which appears every time your device starts and lets you choose ROM to boot. You can see how it looks on the left image below and in gallery. ROMs are installed and managed via modified TWRP recovery. You can use standard ZIP files to install secondary Android ROMs and MultiROM even has its own installer system, which can be used to ship other Linux-based systems.

Features:
* Multiboot any number of Android ROMs
* Restore nandroid backup as secondary ROM
* Boot from USB drive attached via OTG cable

You can also watch a video which shows it in action.


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
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:
  • MultiROM (multirom-YYYYMMDD-vXX-UNOFFICIAL-roth.zip) - download the ZIP file from second post and flash it in recovery.
  • Modified recovery (twrp-multirom-YYYYMMDD-UNOFFICIAL-roth.img) - download the IMG file from second post and use fastboot or Flashify app to flash it.
  • Patched kernel - You can use either one of the stock ones listed below or third-party kernels which include the patch, you can see list in the second post. Flash it using TWRP.
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.
2. Ubuntu Touch
Not yet ported
3. Firefox OS
Not yet ported, but should be as easy as other Android ports.



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


Source code
MultiROM - https://github.com/Tasssadar/multirom (branch master)
Modified TWRP - https://github.com/Tasssadar/Team-Win-Recovery-Project (branch android-6.0)
Device Tree https://github.com/CM-Shield/android_device_nvidia_roth (branch cm-13.0-mrom)
Kernel w/ kexec-hardboot patch - https://github.com/CM-Shield/android_kernel_nvidia_roth (branch cm-12.1-mrom)
XDA:DevDB Information
Shield Portable Multirom, Tool/Utility for the Nvidia Shield

Contributors
Steel01

Version Information
Status: Testing

Created 2015-04-23
Last Updated 2015-04-23
The Following 6 Users Say Thank You to Steel01 For This Useful Post: [ View ] Gift Steel01 Ad-Free
 
 
23rd April 2015, 12:19 AM |#2  
OP Senior Member
Thanks Meter: 1,615
 
More
Reserved
Downloads
1. Main downloads

MultiROM: multirom-20150801-v32-UNOFFICIAL-roth.zip
Modified recovery (based on TWRP 3.0.0.0): twrp-multirom-20160526-UNOFFICIAL-roth.img

Kernel w/ kexec-hardboot patch (Stock 5.1 update 106) [flashable zip]: roth_kexec_boot_stock_106.zip
Kernel w/ kexec-hardboot patch (Stock 5.1 update 103) [flashable zip]: roth_kexec_boot_stock_103.zip
Kernel w/ kexec-hardboot patch (CM 12.1) [flashable zip]: roth_kexec_boot_cm_12_1.zip

MultiROM Manager: MultiROMMgr-debug.apk

2. third-party kernels with kexec-hardboot patch
None yet

Nicely ask your kernel developer to merge kexec-hardboot patch (patch for roth).
The Following 4 Users Say Thank You to Steel01 For This Useful Post: [ View ] Gift Steel01 Ad-Free
23rd April 2015, 12:19 AM |#3  
OP Senior Member
Thanks Meter: 1,615
 
More
Reserved
Notes

I finally made this work. However, it is still not well tested. Three things to note:

1. The touchscreen does not work in the boot selection. Neither will the d-pad. So, I've had to set Y as up, B as down, and A and power as confirm.
2. The recovery is sideways. This is because that's the native orientation of the display. TWRP 3 no longer has rotation code, so I can't rotate the display to landscape.

Also, I have yet to make a Linux rom boot using this. That's mostly because I haven't got the guest atags patch working on Fedora's kernel (haven't tried and personally don't really care about others). If and when I make it work, I'll try to make an mrom installer for it. Sound and graphics acceleration don't work, but everything else seems really solid. Kudos to @Gnurou for coding as much as he has and getting most of it merged into the upstream kernel.

Changelog

20160526
Updated recovery to TWRP 3
20150905
Updated the Stock 106 zip to include the volume fix.
20150905
Added kexec patch for Stock 106.
20150801
Found problems in the kexec patch. Synced those to match Tassadars hammerhead patch and voila, stuff started working better... CM 12.1 and Stock 103 boot great as secondaries now.
20150723
With the release of official update 103, this seems to work pretty well. Some basic testing with stock as primary didn't show any problems. However, I haven't tested much. I've removed older kexec images since they would just cause problems anyway. I've also added multirom manger, which on a rooted system should set up everything in only a few taps.
20150604
Disabled adb in multirom completely. For some reason this breaks adb/mtp/etc in all roms, primary and secondary. Also, by doing a primary backup and restore to secondary, the stock rom boots as a secondary. Unfortunately, it seems to have all the same problems that it has as primary when multirom is enabled. On the bright side, CM seems to work perfectly fine as primary and secondary now.
20150528
Updated TWRP to latest upstream. Removed exfat-fuse support as well to allow it to fit. This means ROMs cannot be installed to external SDs or usb harddrives formatted as NTFS or exfat. ext2/3/4 and fat32 should work. However, inserting multirom into the stock image still breaks many things, so using multirom is still not recommended. I am hopeful that the eventual android 5.1 update will work better with multirom.
20150423
Updated multirom to fix force close of the play store on stock internal. Didn't work.
The Following 3 Users Say Thank You to Steel01 For This Useful Post: [ View ] Gift Steel01 Ad-Free
25th April 2015, 04:53 AM |#4  
AltCtrl701's Avatar
Junior Member
Thanks Meter: 4
 
More
Thanks for this! I now have grid gaming AND cm! Again thanks for your work on the shield.
5th June 2015, 05:43 AM |#5  
OP Senior Member
Thanks Meter: 1,615
 
More
Updated TWRP and Multirom. Still wouldn't call it truly usable, but at least it's workable now. Stock console mode and the play store break when multirom is in use. That's the obvious symptoms. Also noticeable is the internal sd not mounting... I still don't know how to fix it, but it seems part of the init scripts are either failing or plain not running. If you play with this, you'll want to keep a backup of a pristine boot.img around. That's what I'm doing when I want stock for a set top box. But now that adb is working in ROMs, I don't know of any problems using this with CM 12.1. That has me hopeful that if Nvidia ever gets it in gear and releases the update, this will all fall into place.
1st July 2015, 02:32 AM |#6  
OP Senior Member
Thanks Meter: 1,615
 
More
Tassadar updated the multirom TWRP to 2.8.7.0, so I ran builds. Still waiting on Nvidia before continuing with multirom research and implementation... Build in the second post.
The Following User Says Thank You to Steel01 For This Useful Post: [ View ] Gift Steel01 Ad-Free
24th July 2015, 01:45 AM |#7  
OP Senior Member
Thanks Meter: 1,615
 
More
Build updates and a success story. I can boot through the multirom boot menu to stock 103 without problems. I need to do more testing, but it looks like this is safe to use now. However, backup and restore in twrp seems broken with update 103. To the point a restored system will not boot.

Edit: Fixed the backup / restore problem. Link updated. Manager will be updated shortly.

Edit 2: Botched the kexec build apparently. Running a new one now and will update once actually tested this time.

Edit 3: Fixed the kexec kernel. But my previous CM 12.1 build won't boot as a secondary, whereas it did on the old kernel. Will have to debug this.
28th July 2015, 02:00 AM |#8  
Member
Thanks Meter: 39
 
More
Does multirom work if the Shield's primary rom is KitKat? (Update 101) I haven't updated to Lollipop.

I noticed you don't have any kexec kernels for KitKat..
28th July 2015, 02:45 AM |#9  
Senior Member
Thanks Meter: 37
 
More
Quote:
Originally Posted by Steel01

Introduction
MultiROM is one-of-a-kind multi-boot mod. It can boot any Android ROM as well as other systems like Ubuntu Touch, once they are ported to that device. Besides booting from device's internal memory, MultiROM can boot from USB drive connected to the device via OTG cable. The main part of MultiROM is a boot manager, which appears every time your device starts and lets you choose ROM to boot. You can see how it looks on the left image below and in gallery. ROMs are installed and managed via modified TWRP recovery. You can use standard ZIP files to install secondary Android ROMs and MultiROM even has its own installer system, which can be used to ship other Linux-based systems.

Features:
* Multiboot any number of Android ROMs
* Restore nandroid backup as secondary ROM
* Boot from USB drive attached via OTG cable

You can also watch a video which shows it in action.


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
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:
  • MultiROM (multirom-YYYYMMDD-vXX-UNOFFICIAL-roth.zip) - download the ZIP file from second post and flash it in recovery.
  • Modified recovery (twrp-multirom-YYYYMMDD-UNOFFICIAL-roth.img) - download the IMG file from second post and use fastboot or Flashify app to flash it.
  • Patched kernel - You can use either one of the stock ones listed below or third-party kernels which include the patch, you can see list in the second post. Flash it using TWRP.
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.
2. Ubuntu Touch
Not yet ported
3. Firefox OS
Not yet ported, but should be as easy as other Android ports.



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


Source code
MultiROM - https://github.com/CM-Shield/multirom (branch pad_support)
Modified TWRP - https://github.com/Tasssadar/Team-Win-Recovery-Project (branch master)
Device Tree https://github.com/CM-Shield/android_device_nvidia_roth (branch cm-12.0-mrom or twrp_min_omni)
Kernel w/ kexec-hardboot patch - https://github.com/CM-Shield/android_kernel_nvidia_roth (branch cm-12.0-mrom-new)
XDA:DevDB Information
Shield Portable Multirom, Tool/Utility for the Nvidia Shield

Contributors
Steel01

Version Information
Status: Testing

Created 2015-04-23
Last Updated 2015-04-23

can you check the following tread http://forum.xda-developers.com/show...6#post47964256
they have a nice theme and its landscape mode and same resolution of the shield device
thanks
28th July 2015, 03:11 AM |#10  
OP Senior Member
Thanks Meter: 1,615
 
More
Small update.
  • Stock 103 boots fine as a secondary (using the copy primary to secondary function). That makes it a lot easier to experiment on the primary without having to flash back to stock anytime I want to do something not dev related.
  • Stock 101 does *not* currently boot as a secondary. If I set it up as primary, turn on adb, copy to secondary, then try to boot it, the logs show init blowing up all over itself. I have no idea why right now. Also, stock 101 won't work as a primary either, since things like the play store, console mode, and who know what else broke anytime I flashed a kexec kernel.
  • For some reason, multirom doesn't copy the boot image command line parameters into the secondaries kernel command line. This makes it difficult to disable selinux for porting purposes. I had to recompile the CM kernel with selinux disabled to get it to boot with the new blobs initially.

I expect I'll be able to fix the last point with a bit of research. At that point, dual booting CM and stock 103 should be completely feasible. I'm kinda stumped on the problem with 101, though. And since I don't plan to use it, I probably won't spend much time debugging the problem. If someone wants to look into that, I wouldn't mind helping them get started, though.

Edit:
@paed808: No, I've removed the old kitkat kexec kernel for reasons stated above. I could boot into CM as a secondary with stock kitkat without problem; however, that broke stock so bad, I considered it unusable.
28th July 2015, 03:58 AM |#11  
Member
Thanks Meter: 39
 
More
@Steel01 I just wanted to know just in case I accidentally enable Multirom while flashing a zip in TWRP. I don't want to use Multirom on my Shield Portable. I have a Nexus 7 for that. I just want TWRP, but this is the only TWRP for the NSP. If I accidentally enable Multirom what happens? Does it inject itself in the bootloader? If that fails, will it result in a brick?
Post Reply Subscribe to Thread

Guest Quick Reply (no urls or BBcode)
Message:
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes