Ok guys this is my first tutorial, so bare with me. This all started when I wanted to dual boot my Note 10.1(N8013), & came across this thread. If I hadn't found that thread, I would never have come up with this, so thanks are owed to the author. Now then, enough with my ramblings, lets get to the point.
What will this guide get you?
With this guide, you'll get two completely separate ROMs, each with their own recovery menu, so you will be able to use the recovery menu on each ROM individually. You'll also get scripts for switching between roms, & recoveries.
What is required?
*Android Device with MMC Partitons(Ex: mmxblk0p1)
*Computer with Windows
*USB Sync Cable
*8 GB or larger MicroSD Card
Prepping SD Card:
Backup your sd card if you want to keep your data. Install AParted
onto you device from the Play Store. Open Aparted, granting root access when prompted. Decline the "Agreement" because it will just try to install junk. Tap "configuration", then tap the drop box under "Detected devices". You should see "mmcblk0", "mmcblk1", and possibly "usbdisk". If you don't have both "mmcblk0", & "mmcblk1", then stop here, because this guide isn't for you. If you do, then select "mmcblk1" from the list, tap "Save", then "OK". Tap "TOOLS", you should now see parts 1 through 4, "Part: 1" should say fat32 or similar, and say the size in MB of your external SD card. If it does, then tap the checkbox next to "Part: 1", next tap the drop box that says "Create", select "Delete" and tap apply. Once done, all parts should say empty, now for the semi-hard part. We're going to create 4 partitions. The first partition is going to be the standard external sd partition, that will show up in both roms, lets make it. Tap "CREATE" on the top, tap "+", tap the box with "0MB" in it, set it to the size you want the card to be, keeping in mind, that we need at LEAST 4972MB of space for the second ROMs' partitions. Also the more space you leave, the more space you can put into the second ROMs' "Internal" memory. Tap "+" once more, tap the "0MB" box again, this time putting in "1537", tap "+", this time put 839. On the next one put the rest of the remaining space into the box, this one is the data partition, aka the internal memory of the second rom. Tap the menu button, and tap "Apply changes", when done we are finished with the partition setup.
Getting Necessary Files:
You'll need to dump your boot.img, so you can switch between the ROMS(Google is your friend.). Download the ROM you want to use as the second(Has to be CWM flashable). Be sure this ROM has a boot.img included, if it doesn't, then take the boot.img you dumped, and put it into the root of the ROM. Next we need to get the proper GAPPS for the ROM we're installing (If it's a ROM that requires GAPPS.). Next we want to get a recovery, cwm, stock, etc. We need to get the recovery.img of the recovery we want to use, for cwm, you can just open the tar.md5 in WinRAR, and extract this file. Finally you need to download the attached Application I've created especially to convert ROMs to run from the SD Card, it also modifies recovery.img to apply any changes to the SD card ROM, instead of the Internal ROM. I haven't scanned it for viruses, but I don't think it should be a problem, of course you're free to check it if you like, in fact I encourage that you do.
Getting Important Info About Device:
We need to find out what block corresponds to what partition of the devices' internal ROM to input into the application, so it can replace them in the ROM. If your device is a Note 10.1(N8013) then you can skip this section, because the configuration file for that device is already in the attached archive. You need the block numbers for, System, Data, Cache, Boot, & Recovery(Ex: mmcblk0p1). If you can't find them on Google, then you can find it using adb. With the device connected, and with usb debbuging enabled. In cmd type "adb shell cat /proc/emmc", you should see a list of blocks(Ex: mmcblk0p1), with corresponding labels(Ex; /system). Take note of the blocks with the labels,System, Data, Cache, Boot, & Recovery, or similar. If typing "adb shell cat /proc/emmc" doesn't give you labels or doesn't show any information at all, then you'll need to find the labels for the blocks on google.
Using ROM 2 SD:
Extract "ROM-2SD.rar", copy the ROM you with to install into the "Original ROMs" folder, copy GAPPS into "GAPPS" folder(If ROM requires GAPPS) , & copy the "recovery.img" file into the "Recovery" folder. Run "ROM 2 SD.exe", check "Create modified recovery", don't check "Flash boot.img on install", check "Merge GAPPS" (If the ROM requires GAPPS, this will make sure GAPPS are installed when the rom is.). Click "Browse...", select rom from the menu. If you have the N8013 click the "Device:" drop down menu, and select "Note 10.1 (N8013)". If not type "mmcblk1" into "SD Mount:', and put the appropriate block into the corresponding text box. Click convert rom, click "Ok". Select GAPPS, and recovery when prompted to. when you get the prompt that its done, close the application.
Installing the ROM:
First, copy the unmodified/dumped boot.img to the EXTERNAL sd card. as bootStock.img. Next, copy the boot.img from the "Converted ROMs\[ROM_NAME]" folder to the EXTERNAL sdcard as bootSD.img. Now, copy the recovery.img from the "Converted ROMs\[ROM_NAME]" folder to the EXTERNAL sdcard as recoverySD.img. Finally, copy the unmodified recovery.img to the EXTERNAL sd card. BACKUP YOUR ROM BEORE GOING ANY FURTHER!
Copy the converted ROM from "Converted ROMs\[ROM_NAME]\[ROM_NAME].zip" to the EXTERNAL sd card. Install the ROM as you usually would. After installing the ROM reboot, your device should boot into an unchanged Internal ROM, as if nothing has changed. Now we will create a script to boot into the newly installed ROM. Open notepad and copy the following(Replacing path to external sd, boot block, & recovery block.)
dd if=/path/to/extsd/bootSD.img of=/dev/block/[BOOT_BLOCK_HERE]
dd if=/path/to/extsd/recoverySD.img of=/dev/block/[RECOVERY_BLOCK_HERE]
Save the file as "Boot_SD.sh", and copy it to the EXTERNAL sd. Don't Run it yet, because it'll flash the recovery, we want to make sure the second ROM will boot first so you can use the recovery menu to fix it if not. Connect the device to the computer, open cmd, & type "adb shell", "su", "dd if=/path/to/extsd/bootSD.img of=/dev/block/[BOOT_BLOCK_HERE]", if that finishes successfully, then type "adb reboot". the device should reboot into the second ROM, if it does then the install was successful, and we can now proceed to create the Boot Stock script, path to external sd will be different on a custom ROM from the stock ROM:
dd if=/path/to/extsd/bootStock.img of=/dev/block/[BOOT_BLOCK_HERE]
dd if=/path/to/extsd/recoveryStock.img of=/dev/block/[RECOVERY_BLOCK_HERE]
Save as Boot_Stock.sh, copy to EXTERNAL sd. Then run the script as root using Root Browser, or whatever you usually run scripts with. The device should then reboot, if it doesn't then you probably need to search Google on how to root of adb. Once it reboots, I should boot back into the first ROM. You can now run the script we created first at any time to get back to the second ROM. We're almost done run the script to boot sd, then boot into recovery, the way you normally do. This recovery should only affect the Second ROM, to test this clear the davlik cache, & reboot into the ROM if it has to prepare a number of apps, then you know it works, and its safe to use the recovery, whenever you run a script the corresponding recovery will be flashed, so you can use the recovery on the second ROM, as you would on the stock ROM.
Whenever you want to install an updated version of your ROM, you must run the ROM through ROM 2 SD, just like we did earlier. After you know this is compatible with your device, you can check "Flash boot.img on install" which will automatically flash the boot.img when you install the ROM. Don't forget to copy the converted boot.img to the external sd as bootSD.img, any time you install a new ROM/Update. GAPPS can be installed from recovery without modification, just make sure you do it when the recovery is on the second rom. Let me know of any bugs in my application, or with this tutorial, I will make the necessary changes ASAP.