The basic idea of this mod is moving all partitions to the SD card, and running the full OS from the SD card.
There are many reasons why not to do this and probably is a bad idea, but the main reason behind this mod is just a proof of concept that can potentially result in a better internal and external memory utilization and speed improvements.
Reasons I can think of for not doing this:
- Reduced responsiveness and overall speed.
- Over stress on the SD card that can potentially leed to permanent damage to the card.
- The need to use modified boot and recovery images, thus leading to an install incompatible with any rom update (as it is) out there.
- Reduced battery autonomy.
- Many more I can't think of right now.
Reasons to do this:
- Because we can.
- As a proof of concept.
- For developing purposes.
- We get the ability to switch between 2 installations just by switching the SD card (of the same rom or roms with compatible boot images: kernel+ramdisk).
Don't do any of this if you don't know what you are doing!!!
Simplified steps (I've only tested this with Mik's CM7 (betas 6.2 and 6.3) + ClockWorkMod recovery on a Ubuntu machine):
- Download and flash ClockWorkMod recovery.
- Download and flash Mik's CM7.
- Do a full backup from recovery.
- Turn the phone off.
- Take out the SD card and put it on a Card reader on your PC.
- Backup the SD Card contents (including the full backup).
- Use Gparted (or any partition manager that has support for ext4 partition creation) to create the following partition structure:
Code:
num mount point size type
1: /sdcard REST fat32
2: /data 500M ext4
3: /system 190M ext4
4: /cache 64M ext4
The partition number is important, so you should calculate the fat32 partition beforehand or resize the existing one.
- Put new boot and recovery images on the fat32 partition. *
- Put the card on the phone and boot into recovery.
- Mount the sdcard trough menu.
- Connect the phone to your pc and start adb shell.
- Flash custom boot and recovery images:
Code:
flash_image boot /sdcard/boot-everything2sd.img
flash_image recovery /sdcard/recovery-everything2sd.img
- Reboot recovery.
- Through menu, mount all partitions.
- Connect trough adb shell and copy your data:
Code:
adb shell
cp -a /int-cache/* /cache/
cp -a /int-system/* /system/
cp -a /int-data/* /data/
- In adb shell, remove the sd_ext mount script:
Code:
rm /system/etc/init.d/05mountsd
- Reboot the phone.
Off course, no other method of storing the apps on the SD is desired as they are already there.
* I've attached custom boot and recovery images for Mik's CWM and CM7 beta 6.2 (updated boot images to Mik's CM7.02 beta 6.3 in post #3), but, the steps for creating them are next:
- Extract the original images (boot.img and recovery.img) from the root of the downloaded zips (signed-recovery.zip and cyanogen_thunderg-ota-eng.mik.zip).
- Unpack the images following this guide: HOWTO: Unpack, Edit, and Re-Pack Boot Images: Alternative Method (Perl scripts are attached, you'll need compiled mkbootfs and mkbootimg for your OS).
- On recovery ramdisk, change the etc/recovery.fstab file as follows:
Code:
# mnt pnt fstype device [device2] [fstype2]
/boot mtd boot
/cache ext4 /dev/block/mmcblk0p4
/data ext4 /dev/block/mmcblk0p2
/misc mtd misc
/recovery mtd recovery
/sdcard vfat /dev/block/mmcblk0p1 /dev/block/mmcblk0 ext4
/system ext4 /dev/block/mmcblk0p3
/int-cache yaffs2 cache
/int-data yaffs2 userdata
/int-system yaffs2 system
- On boot ramdisk, change the init.rc file as follows (diff output):
Code:
[email protected]:~/Descargas/bootimages$ diff boot.img-orig_ramdisk/init.rc boot.img-ramdisk/init.rc
22d21
< export SD_EXT_DIRECTORY /sd-ext
68,69d66
< mkdir /sd-ext 0771 system system
<
100,103c97,100
< mount yaffs2 [email protected] /system
< mount yaffs2 [email protected] /system ro remount
< mount yaffs2 [email protected] /data nosuid nodev
< mount yaffs2 [email protected] /cache nosuid nodev
---
> mount ext4 /dev/block/mmcblk0p3 /system
> mount ext4 /dev/block/mmcblk0p3 /system ro remount
> mount ext4 /dev/block/mmcblk0p2 /data nosuid nodev
> mount ext4 /dev/block/mmcblk0p4 /cache nosuid nodev
- Recreate the ramdisks and images following the guide posted above, changing the mkbootimg command line to (notice the base and cmdline parameters; for recovery, change boot to recovery on all instances):
Code:
mkbootimg --base 0x12800000 --cmdline 'mem=471M console=ttyMSM2,115200n8 androidboot.hardware=thunderg' --kernel boot.img-kernel --ramdisk boot.img-ramdisk.gz -o boot-new.img
Ahaha another sleepless night ahead to test this out. Any Quadrant Advanced I/O score for comparison?
I've updated boot images to Mik's CM7.02 beta 6.3, attached below.
I'm going to run a Quadrant Advanced and let you know. Anyway, I don't think I will get good results, as my SD card is cheap and buggy, half the time it doesn't get mounted, with or without this mod. Also, I think we'll get better scores with your tweaks, especially with the modded libsqlite.so.
The idea behind this is not to get impressive results or leave it as a definitive mod (as it is right now). Instead, the idea I have is to start moving some things back to the internal memory, for instance, mounting [email protected] as /data/dalvik-cache (just an idea). Basically, leaving the things that need fast reading times, but infrequent writes in the SD, and the things that are constantly being written to, in the internal memory.
Seems awesome. I already booted up perfectly with the modded .imgs, no issues.
so what class of sd card do you preffer?
still class 4 above?
well, sorry about what im going to say , but if **** happened and luckily sd card got corrupted, then the phone does as well?
ive not read all of your first post,
but if ever we are changing sd cards, like example upgrading from 4g-8g,
is it necessary to repeat the whole process or copy paste is enough?(i bet not due to ext)
cmangalos said:
so what class of sd card do you preffer?
still class 4 above?
well, sorry about what im going to say , but if **** happened and luckily sd card got corrupted, then the phone does as well?
ive not read all of your first post,
but if ever we are changing sd cards, like example upgrading from 4g-8g,
is it necessary to repeat the whole process or copy paste is enough?(i bet not due to ext)
Click to expand...
Click to collapse
If **** happened you could mount it in a computer with a card reader and perform a disk check + recovery. If the sd card broke, well.. I think there's still hope, since you may boot in recovery and replace the mount points back to the internal memory ( right ? )
As for the storage upgrade, well, it's not exactly copy-paste but you should be able to duplicate the partitions without much hassle..
I really like this idea,we could get 3000+ quadrant score
But can be potentially dangerous. If anything goes wrong i think that Phone can't boot anymore.
how abt two separate roms in 6 separate partitions ???? is the bootloader cracked ??? Can we have a grub like menu to select two roms ???Way 2: Maybe somebody cud mod android's initramfs and add options there to select two different fstabs ...just a thought
a dual boot would be cool... one rom on the internal nand memory and the other on SD card...
Having fastboot disabled is such a pain in the ass...
ciaox said:
I really like this idea,we could get 3000+ quadrant score
Click to expand...
Click to collapse
Not me, because my SD card is very buggy. Anyway, it depends very much on the card, the card reader and the kernel. Anyway, it's just a proof of concept and it opens a great window for experimentation.
ciaox said:
But can be potentially dangerous. If anything goes wrong i think that Phone can't boot anymore.
Click to expand...
Click to collapse
Not at all, recovery can boot even if the SD card is damaged or not present. Then you can flash the original recovery, boot it and flash any ROM without this mod.
Steps:
- Extract recovery.img from your desired custom recovery.
- Boot recovery.
- Mount /int-cache from mounts and storage menu.
Code:
adb push recovery.img /int-cache/recovery.img
adb shell
flash_image recovery /int-cache/recovery.img
- Reboot recovery
- Flash desired ROM from any SD card.
OR: Just flash an original (released by LG) ROM through emergency mode.
sarfaraz1989 said:
how abt two separate roms in 6 separate partitions ???? is the bootloader cracked ??? Can we have a grub like menu to select two roms ???Way 2: Maybe somebody cud mod android's initramfs and add options there to select two different fstabs ...just a thought
Click to expand...
Click to collapse
Bootloader isn't cracked yet, so it would have to be implemented on the boot.img (kernel and/or ramdisk), and I don't know how. Right now is easier to swith SD cards. Anyway, ROMs should be able to share boot.img (kernel + ramdisk).
ciaox said:
Having fastboot disabled is such a pain in the ass...
Click to expand...
Click to collapse
+1. But bootloader isn't cracked yet.
Just a little heads up, but if anyone is paying attention to the Nook Color development, this is exactly how the boot process on that device works, I am running one os off the sd card and if I remove it I am back to stock. The main point of my brining this up is you create the sd card with all it's partitions by flashing an image of the sd card with the WinImage application on windows. Might at least save you some steps. Hope this helps.
tsukisan said:
Just a little heads up, but if anyone is paying attention to the Nook Color development, this is exactly how the boot process on that device works, I am running one os off the sd card and if I remove it I am back to stock. The main point of my brining this up is you create the sd card with all it's partitions by flashing an image of the sd card with the WinImage application on windows. Might at least save you some steps. Hope this helps.
Click to expand...
Click to collapse
Possibilities seem to be limitless.
Sent from my LG-P500 using Tapatalk
Related
Hi, i try to flash Cyan's new rom v4.0.1, but i keep getting this error message in my recover console:
E:Can't mount /dev/block/mmcblk0p1 (or /dev/block/mmcblk0)
(No such file or directory)
E:Can't mount SDCARD:update.zip
Installation aborted.
After trying unsuccesfully to flash the rom, my sdcard can no longer be seen in my phone and it became write-protected, unable to move files into the sdcard. Appreciate your help....
Edit: Yeah solved this menacing but simple problem which i found out is my sd card fault. Since i couldn't access sdparted in the recovery console, i had to use Ubuntu to partition my sd card again. Sighs... now i have to replace everything back into phone. Thanks anyways for those who gave advice.
is your sdcard formatted to fat32? because /dev/block/mmcblk0p1 or /dev/block/mmcblk0 is referencing your first partition or your sdcard respectively.
you dont flash a rom in consol
you flash it from the recovery screen. you probably CAN flash it from consol, but its much easier to flash from the recovery screen. what recovery image do you have?
david1171 said:
is your sdcard formatted to fat32? because /dev/block/mmcblk0p1 or /dev/block/mmcblk0 is referencing your first partition or your sdcard respectively.
Click to expand...
Click to collapse
yes my sdcard is fat32(1st partition) and my 2nd partition is ext3 whilst the last is a linux-swap partition...
oshizzle1991 said:
you flash it from the recovery screen. you probably CAN flash it from consol, but its much easier to flash from the recovery screen. what recovery image do you have?
Click to expand...
Click to collapse
Using Cyan's Recover 1.4. How do you flash from the console? commands?
Scholesville said:
Using Cyan's Recover 1.4. How do you flash from the console? commands?
Click to expand...
Click to collapse
Have you tried using the CM Updater?
Scholesville said:
yes my sdcard is fat32 and my 1st partition is ext3.
Click to expand...
Click to collapse
Well I've Always had the best luck with my partitions in order as follows Fat32-Ext3-Linux-Swap(if you use it)
And if you still have problems this is what I do
Well I re-downloaded the update. and did this.
This is how I installed without any problems:
: rename to update.zip
: place in the root of sd card
: shut off device
: boot into recovery
: wipe (alt w)
: go to console (alt x) and hit enter
(enter)
# mount -o rw /dev/block/mmcblk0p2 /system/sd
# cd /system/sd
# rm -rf /system/sd/*
# reboot recovery
: now wipe again (alt w)
: run a filesystem check from the menu. If it tells you to run it manually,
drop to a console (alt+x) and run "e2fsck /dev/block/mmcblk0p2".
: flash
Enjoy!!
Hope this helps!!!
yourtravelboy said:
Well I've Always had the best luck with my partitions in order as follows Fat32-Ext3-Linux-Swap(if you use it)
And if you still have problems this is what I do
Well I re-downloaded the update. and did this.
This is how I installed without any problems:
: rename to update.zip
: place in the root of sd card
: shut off device
: boot into recovery
: wipe (alt w)
: go to console (alt x) and hit enter
(enter)
# mount -o rw /dev/block/mmcblk0p2 /system/sd
# cd /system/sd
Hope this helps!!!
Click to expand...
Click to collapse
The problem is i can't even mount mount my 2nd partition, and everytime i write the command > # mount -o rw /dev/block/mmcblk0p2 /system/sd < , it justs says no such file or directory found.
I also can't go into parted in the recovery console so the now the problem is i can't even reformat my card. I'm going to try Ubuntu and reformat my card and partition it again. Sighs...
please, can you tell me how did you solved it, did you use ubuntu to reformat the sdcard? thanks in advance..
q2box said:
please, can you tell me how did you solved it, did you use ubuntu to reformat the sdcard? thanks in advance..
Click to expand...
Click to collapse
Yes, since i was not able to access parted in the recovery console, my only choice was to use Ubuntu: Partition Editor. When i diagnose my sdcard, i manage to format only my ext3 partition so my fat32 remain unchanged. You need to go download Ubuntu OS, then try to install or LiveCD the Ubuntu. There is a thread under android development which will guide you on how to do this...
This is how I got dual booting from windows working and am now dual booting Nottachtrix4G from sdcard with stable
cam and WEBTOP along side AOKPCB
I was only able to achieve this after following sendust7 linux guide for dual boot and adapting to windows so all
credit goes to him.
Again these are the steps I took. If you try this and break something I'm not responsible.
Pre-requisites
Notepad++
Minitool partition wizard
Android SDK (google adb for dummies to get everything you need)
Cygwin (if you dont have it start install now and it might be done when its time to use it)
The rom zip you want on your sdcard and the rom zip you want on your phone
Moto-fastboot (search this forum)
Knowledge of ADB and fastboot
Fully Charged Battery
Backup everything from internal and external sdcard
Reboot to recovery
Flash the rom that you want on your sdcard to your phone like you would do normally.
Reboot phone and set it up if you like or just reboot back to recovery. If you set your rom up at this point, this
is how it will look on your sdcard at first boot.
Reboot back to recovery
adb shell
~ #mount /cache
~ #mount /system
~ #mount /data
~ #mount
Take note of system data and cache file systems (ext3 or ext4)
Power off phone and pull sdcard
Insert sdcard into computer and open minitool partition wizard.
Partition and format sdcard with same filesystem as noted before
These are the partition sizes I went with and only because i didnt feel like adjusting the slider anymore. But
These values did ensure they were big enough to hold the phone partitions. The first partition is whats left over
after resizing other partitions and will be formatted to fat32
system=384 MB <second partition on sdcard
cache=700 MB <third
data=2.6 GB <fourth
Insert sdcard and boot to recovery
adb shell
PATIENCE IS KEY FOR NEXT STEPS
~ # dd if=/dev/block/mmcblk0p12 of=/dev/block/mmcblk1p2 bs=1M
655360+0 records in
655360+0 records out
335544320 bytes (320.0MB) copied, 115.626214 seconds, 2.8MB/s
~ # dd if=dev/block/mmcblk0p15 of=/dev/block/mmcblk1p3 bs=1M
dd if=dev/block/mmcblk0p15 of=/dev/block/mmcblk1p3 bs=1M
640+0 records in
640+0 records out
671088640 bytes (640.0MB) copied, 206.557368 seconds, 3.1MB/s
~ # dd if=/dev/block/mmcblk0p16 of=/dev/block/mmcblk1p4 bs=1M
dd if=/dev/block/mmcblk0p16 of=/dev/block/mmcblk1p4 bs=1M
2048+0 records in
2048+0 records out
2147483648 bytes (2.0GB) copied, 658.327418 seconds, 3.1MB/s
Now get boot.img
While still in adb shell
~ #mount /dev/block/mmcblk0p18 /emmc
~ #cp /dev/block/mmcblk0p11 /emmc/boot.img
~ #exit
~ #adb pull /emmc/boot.img boot.img
Go here and follow this step by step and stop after you've got your boot image unpacked
http://forum.xda-developers.com/show....php?t=1630130
If you have any problems with cpio run cygwin installer again and search for cpio and install
Once boot image is unpacked go to the out directory and find init.rc
Edit init.rc with notepad++ (NOT NOTEPAD) and change these lines
ONLY CHANGE THE /dev/bloc/mmcblk part. LEAVE EVERYTHING ELSE THE SAME
From
mount ext4 /dev/block/mmcblk0p12 /system noatime nodiratime wait ro barrier=1
mount ext4 /dev/block/mmcblk0p16 /data nosuid nodev noatime nodiratime wait barrier=1 noauto_da_alloc
mount ext4 /dev/block/mmcblk0p15 /cache nosuid nodev noatime nodiratime wait barrier=1 noauto_da_alloc
TO
mount ext4 /dev/block/mmcblk1p2 /system noatime nodiratime wait ro barrier=1
mount ext4 /dev/block/mmcblk1p4 /data nosuid nodev noatime nodiratime wait barrier=1 noauto_da_alloc
mount ext4 /dev/block/mmcblk1p3 /cache nosuid nodev noatime nodiratime wait barrier=1 noauto_da_alloc
Once you have made these changes you can finish the tutorial posted above or below for repacking and make sure to
click thanks. If the boot_new.img is a different size than original that's okay.
http://forum.xda-developers.com/show....php?t=1630130
Move your boot_new.img to your moto-fastboot and reboot phone to fastboot.
moto-fastboot boot boot_new.img
If you're booted into your sdcard rom you're almost done.
Reboot to recovery and install any rom you want and boot to it.
Now create this directory on your internal sdcard
/sdcard/Boot/sdrom/
Copy your boot_new.img you used to boot your sd rom earlier to this directory and rename it to sdrom.img
Now create this directory on your internal sdcard
/sdcard/Boot/emmcrom/
Now open the rom zip you installed to your phone and copy the boot.img to this directory and rename it to
emmcrom.img
Use attached script with scriptmanager to commense dual booting. (Rename to modified-boot-rom.sh)
Run script as root with argument 1 to reboot to sdcard rom and argument 2 to reboot to phone rom. Argument 3 will
send you to recovery.
All done from windows even though it would be twice as easy and fast to do with linux but there ya go.
I take no credit as all I did was find the right resources and none of this would even be possible without
sendust7. If this helped you Please go to his guide and thank him TOO!!!!
http://forum.xda-developers.com/show....php?t=1642185
great.....will try and post back my experience!!!
I get everything up to get boot image. when I run that command, it runs for a few seconds then adb stops responding.
Any advice? I waited the one time for 15 minutes hoping it would respond...but it didn't.
thanks!
Sent from my MB860 using xda premium
95rr900 said:
I get everything up to get boot image. when I run that command, it runs for a few seconds then adb stops responding.
Any advice? I waited the one time for 15 minutes hoping it would respond...but it didn't.
thanks!
Sent from my MB860 using xda premium
Click to expand...
Click to collapse
What rom are you putting on sdcard
EDIT: look in your rom.zip.....boot img may be in there. If it is you can just use that
Edit: could try to make sure sdcard is mounted.......mount /sdcard
Sent from my MB860 using Tapatalk 2
Im putting nottachtrix on sdcard.
Ok, so I can just copy the boot image from the rom zip and use that in cygwin...and go from there?
Now that I think about it, the sdcard was probably not mounted.
I'll give it another go in the morning. Thanks for the help!
Sent from my MB860 using xda premium
95rr900 said:
Im putting nottachtrix on sdcard.
Ok, so I can just copy the boot image from the rom zip and use that in cygwin...and go from there?
Now that I think about it, the sdcard was probably not mounted.
I'll give it another go in the morning. Thanks for the help!
Sent from my MB860 using xda premium
Click to expand...
Click to collapse
Yes
Sent from my MB860 using Tapatalk 2
Install rom you want on your sdcard
hatefuel19 said:
Install rom you want on your sdcard
Reboot phone and set it up if you like or just reboot back to recovery. If you set your rom up at this point, this is how it will look on your sdcard at first boot.
Click to expand...
Click to collapse
What do you mean by install on sdcard and is that internal or external sd? And does Aroma make any difference
many thanks Simon
EDIT : Im an idiot it means install to the phone, the rom you want to have booting from sdcard.
This is really burnin my nut sack
No matter what I do, I can't get through "getting boot image". I tried going into the nottachtrix rom.zip, but it is set up different from other roms. I guess because of the aroma installer?
Maybe I'll try with a different rom just to see if I have the same problem.
EDIT: Tried it with aokp, and still get adb not responding in the middle of getting boot image?
95rr900 said:
This is really burnin my nut sack
No matter what I do, I can't get through "getting boot image". I tried going into the nottachtrix rom.zip, but it is set up different from other roms. I guess because of the aroma installer?
Maybe I'll try with a different rom just to see if I have the same problem.
EDIT: Tried it with aokp, and still get adb not responding in the middle of getting boot image?
Click to expand...
Click to collapse
In about thirty minutes I'm gonna run through this again. Been trying to get webtop2sd working. Once I do I'm gonna do this tut again step by step and I'll see if I have any snags.
And you're right since nottachtrix uses aroma it isn't packed like other rooms which is why I put this step in here
Edit: strange how its doin same to me now too.......found a fix and gonna double check b4 I update op
EDIT: op updated - give it a try
Sent from my A500 using Tapatalk 2
awesome, thank you!
Sent from my MB860 using xda premium
stokehall said:
What do you mean by install on sdcard and is that internal or external sd? And does Aroma make any difference
many thanks Simon
EDIT : Im an idiot it means install to the phone, the rom you want to have booting from sdcard.
Click to expand...
Click to collapse
not an idiot bud. I'll clarify in op
Alright, I'm going back in! I'm going to start from scratch...format external sd and repartion.....the works!
I got Nottachtrix set up perfect and doing a nandroid of it right now. Hopefully my next post will be about success!!
Thanks OP for updating the instructions......Here we go!!
I had no errors this time, and it still didn't work? How big is your boot.img after you extract it and repack it? Mine is 2.9mb,,is that right (nottachtrix)?
also, my other question is....when you make the partitions on the sdcard, are you making them primary or logical (I did primary)? everything was ext3 when I mounted it...and that's what I made the partitions.
Also, in mini partition tool when you create them...how are you naming them? I'm just naming them, system, cache, and data?
I used aokpbc 35.1 for the internal rom and just copied the boot.img into the boot folder.
Also, the original boot.img that gets extracted from nottachtrix is 8mb in size. But after making the edits with notepad++ and saving, then repacking in cygwin...it is only 2.9mb?
This is frustrating because it takes awhile to partition the sdcard and then copy everything over in adb shell.
Also, after doing the whole boot.img thing, and then doing moto-fastboot boot boot_new.img
it boots into nottachtrix, but I'm already in nottachtrix. How can I tell if I booted from the sdcard?
Sorry for all these questions, I really want to get this working! It's more a matter of just not giving up now...lol!
Anybody else get this to work on windows?
Thanks!
95rr900 said:
I had no errors this time, and it still didn't work? How big is your boot.img after you extract it and repack it? Mine is 2.9mb,,is that right (nottachtrix)?
also, my other question is....when you make the partitions on the sdcard, are you making them primary or logical (I did primary)? everything was ext3 when I mounted it...and that's what I made the partitions.
Also, in mini partition tool when you create them...how are you naming them? I'm just naming them, system, cache, and data?
I used aokpbc 35.1 for the internal rom and just copied the boot.img into the boot folder.
Also, the original boot.img that gets extracted from nottachtrix is 8mb in size. But after making the edits with notepad++ and saving, then repacking in cygwin...it is only 2.9mb?
This is frustrating because it takes awhile to partition the sdcard and then copy everything over in adb shell.
Also, after doing the whole boot.img thing, and then doing moto-fastboot boot boot_new.img
it boots into nottachtrix, but I'm already in nottachtrix. How can I tell if I booted from the sdcard?
Sorry for all these questions, I really want to get this working! It's more a matter of just not giving up now...lol!
Anybody else get this to work on windows?
Thanks!
Click to expand...
Click to collapse
the difference in sizes is okay. The orginal boot.img contains the kernel whereas the new boot.img only contains the ramdisk. my original is 8 mb and repacked is 2.8
if you ran fast-boot boot boot_new.img and it booted you're in your sd rom. from adb shell run mount and you'll see that system is mounted under /dev/block/mmcblk1p2. This is your sd card partition, internal is mmcblk0p12.
sd card partition naming is okay as that is exactly how i named mine. Make them primary.
Don't worry about asking questions, were both learning
I'm reaching here, but I wonder if it has something to do with how the internal and external sdcard are. I run aokpcb, but I flip flop the cards, so external is emmc and internal is sdcard.
Do you think that might be an issue?
Although, I did do a clean install of aokpbc with stock settings, still a no go.
I'll have to give it another try, I just don't wanna mess up my new 32gb sdcard!
I have to be close to getting this to work, this last time I made it all the way to using script manager to boot into the other rom...but it doesn't get past the splash screen,,,then loops.
anyway, thanks for your help...really!!
I don't anderstand....
May be wrong section, but...
Why don't use Nandroid backup files ?
Look in these directory :
/sdcard/clockworkmod/backup/<backupdatesave>
You have yours :
- boot.img
- system.etx4.tar
- data.ext3.tar
- cache.ext3.tar
...
all you need here.
May i'm wrong, but do a nandroid after install CM7, nottachtrix4G, CM9, etc...
A use Boot.img for multi boot
You can use "Boot Manager" too... http://forum.xda-developers.com/showthread.php?t=1191014
To create ".img" file, you can use this proc (use CWM program) :
su
mkyaffs2image /system system.img &
while [ `pidof mkyaffs2image` ]; do
echo -n "."
sleep 2
done
Create "system.img" file...
Same for
/data
/cache
Boot
...
95rr900 said:
I'm reaching here, but I wonder if it has something to do with how the internal and external sdcard are. I run aokpcb, but I flip flop the cards, so external is emmc and internal is sdcard.
Do you think that might be an issue?
Although, I did do a clean install of aokpbc with stock settings, still a no go.
I'll have to give it another try, I just don't wanna mess up my new 32gb sdcard!
I have to be close to getting this to work, this last time I made it all the way to using script manager to boot into the other rom...but it doesn't get past the splash screen,,,then loops.
anyway, thanks for your help...really!!
Click to expand...
Click to collapse
if its looping its so ething to do with your boot.img. tinker with it til you get it right. remember if you get that far and it doesnt boot dont start over. just flash the working boot image, meaning the one from the rom you just left and then try editing the broken boot.img
delewer said:
I don't anderstand....
May be wrong section, but...
Why don't use Nandroid backup files ?
Look in these directory :
/sdcard/clockworkmod/backup/<backupdatesave>
You have yours :
- boot.img
- system.etx4.tar
- data.ext3.tar
- cache.ext3.tar
...
all you need here.
May i'm wrong, but do a nandroid after install CM7, nottachtrix4G, CM9, etc...
A use Boot.img for multi boot
You can use "Boot Manager" too... http://forum.xda-developers.com/showthread.php?t=1191014
To create ".img" file, you can use this proc (use CWM program) :
su
mkyaffs2image /system system.img &
while [ `pidof mkyaffs2image` ]; do
echo -n "."
sleep 2
done
Create "system.img" file...
Same for
/data
/cache
Boot
...
Click to expand...
Click to collapse
give that a shot and see if it works
My partitions are all ext3, but in the boot.img it says mount ext4? Do i change it to ext3 or leave it ext4?
Also do you mind posting a video tutorial?
hatefuel19 said:
adb shell
~ #mount /cache
~ #mount /system
~ #mount /data
~ #mount
adb shell
PATIENCE IS KEY FOR NEXT STEPS
~ # dd if=/dev/block/mmcblk0p12 of=/dev/block/mmcblk1p2 bs=1M
655360+0 records in
655360+0 records out
335544320 bytes (320.0MB) copied, 115.626214 seconds, 2.8MB/s
~ # dd if=dev/block/mmcblk0p15 of=/dev/block/mmcblk1p3 bs=1M
dd if=dev/block/mmcblk0p15 of=/dev/block/mmcblk1p3 bs=1M
640+0 records in
640+0 records out
671088640 bytes (640.0MB) copied, 206.557368 seconds, 3.1MB/s
~ # dd if=/dev/block/mmcblk0p16 of=/dev/block/mmcblk1p4 bs=1M
dd if=/dev/block/mmcblk0p16 of=/dev/block/mmcblk1p4 bs=1M
2048+0 records in
2048+0 records out
2147483648 bytes (2.0GB) copied, 658.327418 seconds, 3.1MB/s
Click to expand...
Click to collapse
ADB was unable to mount cache
Then when i changed the block/mmcblk0p16 , i was told it was unable to (Not Enough space)
I am very much a noob with this, just determined not to go without dual boot!
This project is intended mainly for those interested in trading the near plug-and-play convenience of a dual boot flashable zip for increased flexibility when experimenting with different ROMs.
Users may also be interested in comparing the performance of identical ROMs hosted on different physical devices. Others may want to configure their emmc-based ROM, clone to SD and then flush emmc to host their entire system on removable media.
Preliminaries
Unlocked phone with fully charged, healthy battery and ClockWorkMod (CWM) Recovery 5.0.2.0 installed.
Instructions
1. Boot to primary ROM to ensure that correct boot image is flashed, though it is not necessary with the initial release of clone ROM zip.
2. Boot to CWM and connect phone to computer.
3. Partition SD card to host ROM. There are many ways to do this, but the most convenient is “SmartPart”: http://forum.xda-developers.com/showthread.php?t=1651356 .
If you're already dual booted, this step shouldn't be necessary unless you are cloning a “heavy” ROM that doesn't quite fit. If so, you can modify SmartPart to increase the size of your SD ext partitions at the expense of further downsizing FAT32. I did this when porting NottachTrix 1.3.1 to SD.
4. Flash Clone-ROM-to-SD-Card-signed.zip : http://www.mediafire.com/?ara2r3174cb9yir
This will, in sequence: a) Backup any existing SD card-based ROM, b) wipe all three ROM partitions on SD card (it does not touch your FAT32), c) push primary ROM /system, /cache and /data to SD card and d) push ROM boot image to /tmp/boot.img. That's all for now --- see Note below. The entire process can take 15-20 minutes depending mainly on prior existence of SD ROM partitions, ROM size and performance of SD card.
Faster (no SD ROM backup) Clone-ROM-to-SD-Card-No-BK-signed.zip: http://www.mediafire.com/?kbaowagqmnu6k5o
Note: In the clone zip “updater-script”, there is a block of source code commented out. I was trying to modify the boot image, but CWM does not appear to support the "unpackbootimg" and "mkbootimg" executables. And CWM's “busybox awk” does not include the gawk extensions required to adequately support binary file processing. Another (smaller) problem is that the user has no direct knowledge as to which boot image is being modified unless that image is manually inserted into the zip prior to flash, or user boots to primary ROM before cloning. So, for now I am content with modifying boot image ramdisks offline using Perl on my Ubuntu 12.04 laptop.
5. User modifies ROM boot image offline to redirect /system, /cache and /data mounts from emmc to sdcard (just three lines of code in “init.olympus.rc”). For example if ROM = Neutrino V2.8 GT, modify Neutrino GT boot image to create “boot-Neutrino-V2.8-GT-sdcard.img”. See my Auto-Modify Boot Image thread here: http://forum.xda-developers.com/showthread.php?t=1766939
Here are sample boot images ported to SD card:
boot-Neutrino-V2.8-GT-sdcard.img: http://www.mediafire.com/?oudm9qm5a0d7glh
boot-NottachTrix-1.3.1-att-sd-ext.img: http://www.mediafire.com/?nok6hp4rl5e92h6
Faux-CM7-1.00GHz-026b1boot-sdcard.img: http://www.mediafire.com/?fesm0hff58pnv28
6. Power down, enter fastboot and flash modified boot image, for example:
[email protected]:~/Desktop# fastboot flash boot boot-Neutrino-V2.8-GT-sdcard.img
sending 'boot' (2963 KB)...
OKAY [ 0.210s]
writing 'boot'...
OKAY [ 0.266s]
finished. total time: 0.476s
[email protected]:~/Desktop# fastboot reboot
rebooting...
finished. total time: 0.000s
[email protected]:~/Desktop#
After boot-up to SD, you can cross-verify that Neutrino-V2.8 was indeed cloned to sdcard by entering the android “mount” command via ADB or on phone using Terminal Emulator:
Code:
rootfs on / type rootfs (ro,noatime,nodiratime)
tmpfs on /dev type tmpfs (rw,noatime,nodiratime,mode=755)
devpts on /dev/pts type devpts (rw,noatime,nodiratime,mode=600)
proc on /proc type proc (rw,noatime,nodiratime)
sysfs on /sys type sysfs (rw,noatime,nodiratime)
tmpfs on /mnt/asec type tmpfs (rw,noatime,nodiratime,mode=755,gid=1000)
tmpfs on /mnt/obb type tmpfs (rw,noatime,nodiratime,mode=755,gid=1000)
[COLOR="Blue"]/dev/block/mmcblk1p2 on /system type ext4 (rw,noatime,nodiratime,errors=continue,barrier=0,nobh,data=writeback,noauto_da_alloc,discard)
/dev/block/mmcblk1p4 on /data type ext4 (rw,nosuid,nodev,noatime,nodiratime,barrier=0,nobh,data=writeback,noauto_da_alloc,discard)
/dev/block/mmcblk1p3 on /cache type ext4 [/COLOR](rw,nosuid,nodev,noatime,nodiratime,errors=continue,barrier=0,nobh,data=writeback,noauto_da_alloc,discard)
/dev/block/mmcblk0p13 on /osh type ext4 (rw,nodev,noatime,nodiratime,barrier=1,data=ordered,noauto_da_alloc)
/dev/block/loop0 on /pds type ext3 (rw,noatime,nodiratime,data=ordered)
/dev/block/vold/179:33 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/block/vold/179:33 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,relatime,size=0k,mode=000)
/dev/block/vold/179:18 on /mnt/emmc type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
Benchmarks (CF Bench)
Identical ROMs (Neutrino V2.8 GT) hosted on emmc and Class 6 SD card. Guess which one is SD ROM...
Standard disclaimers apply. In short, I am not responsible for any harm you or your phone may incur by using any or all of this material.
Many thanks to Notorious544d and CM/Photon/Atrix/Android dev teams for their excellent ROMs, hatefuel19 for porting NottachTrix to SD, Koush (CWM and AnyKernelUpdater) and Always_Jonezen for offering the clone-to-SD concept.
Thanks man and it's definitely worth the leg work.
Sent from my MB860 using Tapatalk 2
Nice job... :>)
downloading...
Thanks for the tips!
AWWWWWESOME!!!
Thank you for your work - man I´ve been waiting for something like this.:laugh:
I think more interesting tool would be one which changes partitions installation in zip files to one which is preferred by user with all symlinks etc.
Adam
greenwitch said:
I think more interesting tool would be one which changes partitions installation in zip files to one which is preferred by user with all symlinks etc.
Adam
Click to expand...
Click to collapse
All of the partitioning tools I have used to date perform auto-numbering.
Also, any partitions added beyond the first four primary partitions (e.g. beyond FAT32 and three primary "ext"s for dual boot) must be extended, not primary.
One interesting experiment would be to try adding a fourth "ext" for webtop2sd.
Hope this helps.
I finally got this working however the cloned version shows "Wifi error" and cannot turn on Wifi. I think this is similar to the Data error that someone posted. I am guessing this is due to permissions. I am going to try re-cloning with all of the Radios turned on at the time of cloning to see if this makes a difference. I will post back if successful.
[Update: Wifi not working even when cloned with all radios turned on prior to cloning. BTW, my ROM which shows this issue on ext-SD only is Notatrix 1.3.1. I might try a CM7 based ROM if I can get a system.img of it - right now I don't want to wipe Notatrix without getting it to fully work off ext-SD.]
If someone can create a flashable zip that fixes permissions on ext-SD card (just like CWM does for int SD), that would solve a lot of such issues easily and would be appreciated.
In order get the cloning done successfully, I did have to modify SmartPart a bit since I am using a 32GB SD card and it appears that the last 6 MB on a 32GB SD card are reserved or cannot be allocated for some reason. I already PMd sendust7 on this and am posting in case someone else also has the same issue with 32GB SD cards. Again, I am not sure if this is something to do with the specific SD card that I am using (Samsung Class10 32GB micros SD). This is the change I made to the part-sd script to get it working (reduce the size of the last created partition by 6):
After this line:
parted /dev/block/mmcblk1 mkpartfs primary ext2" $val7" "$val8"
added this block:
if [ $? -ne 0 ]
then
val8=`expr $val8 - 6`
echo "Partition 3 create failed. Retrying with a slightly smaller size to account for some large SD cards(New last sector=$val8).."
parted /dev/block/mmcblk1 mkpartfs primary ext2" $val7" "$val8"
fi
shenoyh said:
I finally got this working however the cloned version shows "Wifi error" and cannot turn on Wifi. I think this is similar to the Data error that someone posted. I am guessing this is due to permissions. I am going to try re-cloning with all of the Radios turned on at the time of cloning to see if this makes a difference. I will post back if successful.
[Update: Wifi not working even when cloned with all radios turned on prior to cloning. BTW, my ROM which shows this issue on ext-SD only is Notatrix 1.3.1. I might try a CM7 based ROM if I can get a system.img of it - right now I don't want to wipe Notatrix without getting it to fully work off ext-SD.]
If someone can create a flashable zip that fixes permissions on ext-SD card (just like CWM does for int SD), that would solve a lot of such issues easily and would be appreciated.
In order get the cloning done successfully, I did have to modify SmartPart a bit since I am using a 32GB SD card and it appears that the last 6 MB on a 32GB SD card are reserved or cannot be allocated for some reason. I already PMd sendust7 on this and am posting in case someone else also has the same issue with 32GB SD cards. Again, I am not sure if this is something to do with the specific SD card that I am using (Samsung Class10 32GB micros SD). This is the change I made to the part-sd script to get it working (reduce the size of the last created partition by 6):
After this line:
parted /dev/block/mmcblk1 mkpartfs primary ext2" $val7" "$val8"
added this block:
if [ $? -ne 0 ]
then
val8=`expr $val8 - 6`
echo "Partition 3 create failed. Retrying with a slightly smaller size to account for some large SD cards(New last sector=$val8).."
parted /dev/block/mmcblk1 mkpartfs primary ext2" $val7" "$val8"
fi
Click to expand...
Click to collapse
Since you're having problems with Nott 1.3.1 on SD-ext and I need a stable ROM for my business trip to Europe tomorrow, I thought it would be helpful to go through the entire process of cloning Nott 1.3.1.
Here's what I did today:
Install NottachTrix 1.3.1 using CWM 5.0.2.0 and select all defaults.
At MotoBlur welcome screen, go to Settings > Set up Wifi to configure wireless.
Set up MotoBlur and Google. This should not be necessary, but we want to reduce duplication of effort after cloning.
Accept all updates to existing apps.
Clone: http://forum.xda-developers.com/showthread.php?t=1764680
Configure dual boot: http://forum.xda-developers.com/showthread.php?t=1645344
Modify ROM2 boot.img: http://forum.xda-developers.com/showthread.php?t=1766939 Call it “boot-repack.img”.
Then...
Code:
adb shell mount sdcard (may not be necessary)
adb push boot-repack.img /sdcard/Boot/ROM2/boot.img
Boot to fastboot and reboot to ROM2:
Code:
fastboot flash boot boot-repack.img
fastboot reboot
Use Android mount command to verify ROM2 mounts for /system, /cache and /data.
System can now dual boot Nott 1.3.1 on internal (/sdcard) and external (/sdcard-ext) . And wifi comes right up on both sides.
I'm not sure why ROM2 would misbehave for you since it is an exact replica of ROM1...
sendust7 said:
Install NottachTrix 1.3.1 using CWM 5.0.2.0 and select all defaults.
I'm not sure why ROM2 would misbehave for you since it is an exact replica of ROM1...
Click to expand...
Click to collapse
Thanks, works now - I think (but cannot be certain) that it was the faux 1.0G kernel that I had installed on Notta earlier that seems to be the reason. (Maybe the faux 1.0G kernel in Nottachtrix Aroma installer may have some paths set that refer to internalSD and are not changed during the cloning process?)
I didn't do all that you mentioned (mainly because I wanted to preserve the Nottachtrix install in the state it was in on the internal SD), but you pointed me in the right direction by saying "defaults" and that helped.
I reinstalled Nottachtrix, without deleting existing data, directly to SD using hatefuel19's Nottachtrix1.3.1.sd-ext.zip http://forum.xda-developers.com/showpost.php?p=27543308&postcount=1 from the other thread selecting the default ATT kernel and now the Wifi is working!.
Thanks for taking the time to experiment with this and respond to me.
Now that Nottachtrix has been successfully cloned to ext-SD, I can now proceed to do more experimental work by using my internal SD for CM7, CM9 or related ROMs.
CF-bench results from Nottachtrix 1.3.1 ROM on ext-SD versus int-SD. The better one is int-SD. However, despite the gap in the benchmarks, I didn't feel much of a difference during regular usage between the two and I think I can confidently say that the ext-SD version is going to be my primary now that its fully working. I plan to use the int-SD for experimental ROMs.
[Note the ext-SD version benchmark is uising the stock ATT kernel while the internal-SD version is using the Faux1G kernel. So not necessarily a good comparison, but realized that only after posting].
Hello,
I'm quite new in android development, so sorry for dumb question.
I have new GT-S6102 (because of dualsim setup) and I'd be quite happy with the stock firmware (S6102XXMA2) if it wasn't of the 160M memory. What I'm trying to do is to modify init.rc in bootimage to mount /data on 4G second partition of my SDCard instead of 160M /dev/stl11.
I'm using a Ubuntu 12.04 machine for my experiments.
I've copied /dev/block/bml7 from my phone using ADB, extracted it using abootimg.
First (and I hope that main) trouble is that when I try to update the boot.img (abootimg -u boot.img -r initrd.img), even without modifying the ramdisk, the resulting image has few different bytes near the beginning of the file. Anyway when I flashed it back to phone, it booted normally.
Then I unpacked the ramdisk (using steps from here) and modified init.rc:
Code:
mount ext4 /dev/block/mmcblk0p2 /data nosuid nodev crypt check=no
# mount rfs /dev/stl11 /data nosuid nodev crypt check=no
I have a 32G uSD card with 28G FAT and 4G EXT4 primary partitions.
Then I've repacked it, made new boot.img, flashed with ODIN and it made a nice bootloop with Samsung bootanimation without usual sound.
What am I doing wrong?
Is this modification even possible?
Thanks for advice
P.S.
I've tried to extract the boot.img from S6102XXMA3_S6102DBTMA1_S6102XXMA2_HOME.tar.md5, but 7zip on Windows and TAR on linux complain that it isn't valid archive.
jelinek.01 said:
Hello,
I'm quite new in android development, so sorry for dumb question.
I have new GT-S6102 (because of dualsim setup) and I'd be quite happy with the stock firmware (S6102XXMA2) if it wasn't of the 160M memory. What I'm trying to do is to modify init.rc in bootimage to mount /data on 4G second partition of my SDCard instead of 160M /dev/stl11.
I'm using a Ubuntu 12.04 machine for my experiments.
I've copied /dev/block/bml7 from my phone using ADB, extracted it using abootimg.
First (and I hope that main) trouble is that when I try to update the boot.img (abootimg -u boot.img -r initrd.img), even without modifying the ramdisk, the resulting image has few different bytes near the beginning of the file. Anyway when I flashed it back to phone, it booted normally.
Then I unpacked the ramdisk (using steps from here) and modified init.rc:
Code:
mount ext4 /dev/block/mmcblk0p2 /data nosuid nodev crypt check=no
# mount rfs /dev/stl11 /data nosuid nodev crypt check=no
I have a 32G uSD card with 28G FAT and 4G EXT4 primary partitions.
Then I've repacked it, made new boot.img, flashed with ODIN and it made a nice bootloop with Samsung bootanimation without usual sound.
What am I doing wrong?
Is this modification even possible?
Thanks for advice
P.S.
I've tried to extract the boot.img from S6102XXMA3_S6102DBTMA1_S6102XXMA2_HOME.tar.md5, but 7zip on Windows and TAR on linux complain that it isn't valid archive.
Click to expand...
Click to collapse
OK, so it seems that I´ve managed to work it out at last.
The unpacking and repacking of bootimage was all right, trouble was in updating only the init.rc and probably using ext4. What I have done:
I replaced all mentions of mounting /dev/stl11 on /data by mounting /dev/block/mmcblk0p2 (that was in files fota.rc, init.rc, init.charge.rc, res/recovery.fstab). In res/recovery.fstab I also changed formatting type from rfs16 to rfs32 so it supports my 4.5G partition.
Then I flashed the bootimg in my phone and formatted the data partition in recovery (that was the only way to make it rfs I've found).
Maybe it would all work with changing the format and mount type to ext4, but I hoped for as little modification as possible.
Now it reports 4.25GB free space after all my apps are installed, hurray .
I have just to remember to never boot it up without SDcard inserted. Maybe it would work as a possibility to borrow the phone to somebody with another card.
The boot.img came from S6102XXMA3_S6102DBTMA1_S6102XXMA2_HOME.tar.md5, if someone wants to try it, it is here . It probably wouldn't touch the original /data partition, so it might be possible to try it and undo it by flashing original boot.img. It just requires to have a second primary partition on SDcard and formatting it in recovery before first boot.
i didnt know to do that boot "compiling" like u did, quite good for you, im using cronmod int2ext , i have 850mb internal. i use 'pimp my rom' to get init.d support.
FIRST OF ALL, we should say thanks to @alvinhochun 's work on porting kexec hardboot patch to Xperia M. His original thread is here: http://forum.xda-developers.com/showthread.php?t=2568151
And @Tasssadar who has ported kexec hardboot patch on MSM chips. Original thread is here: http://forum.xda-developers.com/nexus-4/orig-development/kexec-hardboot-patch-t2472316/post46223952
As for the kernel patch and kexec binary for TX, they are here: http://forum.xda-developers.com/showthread.php?t=2747215
OK let's begin our tour on TX...
0. Disclaimer
This is a rather dangerous hack. I'm not responsible for data loss, broken SD cards, dead internal storage or bricked phones. Try this at your own risk. Proceed only when you know what you are doing.
1. Requirements
a. ROM with “kexec hardboot” patched kernel. My OmniROM build will do the job. Since Alx31Tse is also using my kernel source for TX, the Carbon builds for TX may be capable of handling this as well. This ROM should be installed into internal storage : just flash it in recovery as usual.b. External MicroSD card which is big enough for your ROMs. One ROM takes up ~4GB space.c. Some basic knowledge of partitions, device nodes, ramdisk modding(check this thread by letama: http://forum.xda-developers.com/showthread.php?t=2418893).
2. Partitioning the external sdcard
a. Plan the partitions
Each ROM need three partitions : system, data and cache. You need at least 1.4GB system + 2GB data + 400MB cache for stock ROMs. The system partition for third-party ROMs can be shrinked to ~900MB. Of course you can set your own data partition size if 2GB does not suit your needs. The space left can be used for storing data just like a normal sdcard.
For example, I'm using a 16GB card and going to install two stock ROMs (9.1.B.1.67 + 9.2.A.0.295). So I have to create at least 6 partitions for them:
1.4GB system for 295
2GB data for 295
400MB cache for 295
1.4GB system for 67
2GB data for 67
400MB cache for 67
There is ~8GB left after all these partitions. This can be used as a normal sdcard. Just create another partition for it.
b. Go partitioning it!
Everyone has his own way of doing this. I prefer using a USB card reader and Disk Utility that comes with Ubuntu.
Erase the card and initialize it with GUID Partition Table (GPT). Of course you can use MBR, but I didn't test it. Be careful in the following steps if you choose MBR.
Create the “normal sdcard” partition. In my example, create a 8GB partition here and format it with FAT32. THIS PARTITION SHOULD BE THE FIRST ONE ON THE CARD! Otherwise Android system may not be able to recognize it.
Create the partitions for guest systems. There are no particular order for the partitions. Just make sure you remember their order. DO NOT FORMAT them for now.
In my example:
PART 1: 8GB, FAT32
PART 2: 1.4GB unformatted
PART 3: 2GB unformatted
PART 4: 400MB unformatted
PART 5: 1.4GB unformatted
PART 6: 2GB unformatted
PART 7: 400MB unformatted
3. Kernel mods for guest systems
For each guest system:
a. Unpack its kernel.
If you are going to install a full stock ROM, please choose a corresponding kernel with recovery built-in in Android Development section.
If you are going to install a third-party ROM (OmniROM, CM etc) or customized stock ROM (Rockers etc), chances are that their kernels have recovery built-in already and you can proceed.
Now unpack the kernel.
We have zImage(sec0.bin), ramdisk(sec1.bin) now. The rest can be ignored.
b. Modify the mount entries in fstab (and other files)
fstab is the file that suggests the real device for the /system, /data and /cache mount points. Modding it will make it possible to mount the partitions other than the ones in internal storage on /system /data and /cache, so that we can separate different systems into different partitions.
Now you have to be clear about “how the partitions on external card will be presented in your phone” (their device nodes). In my example (GPT with 7 partitions):
PART 1: 8GB → /dev/block/mmcblk1p1
PART 2: 1.4GB → /dev/block/mmcblk1p2
PART 3: 2GB → /dev/block/mmcblk1p3
PART 4: 400MB → /dev/block/mmcblk1p4
PART 5: 1.4GB → /dev/block/mmcblk1p5
PART 6: 2GB → /dev/block/mmcblk1p6
PART 7: 400MB → /dev/block/mmcblk1p7
As has been mentioned above, mmcblk1p1 is for normal file storage, p2~p4 is for 295, p5~p7 is for 67.
Files that need modding:
(sec1.bin/sbin/ramdisk.cpio) /fstab, /fstab.qcom, /init.target.rc
Click to expand...
Click to collapse
(sec1.bin/sbin/ramdisk-recovery.cpio) /fstab, /fstab.qcom, /etc/recovery.fstab, /etc/twrp.fstab
Click to expand...
Click to collapse
The fstabs are easy to deal with. Just change the block device name for /system /cache and /data to /dev/block/mmcblk1p* accordingly. The init.target.rc has only one line that should be modded. For example,
FOR 9.1.B.1.67 in my example:
ramdisk.cpio/fstab:
/data ext4 /dev/block/mmcblk1p6
/cache ext4 /dev/block/mmcblk1p7
/boot/modem_fs1 raw /dev/block/platform/msm_sdcc.1/by-name/modemst1
/boot/modem_fs2 raw /dev/block/platform/msm_sdcc.1/by-name/modemst2
Click to expand...
Click to collapse
ramdisk.cpio/fstab.qcom:
/dev/block/mmcblk1p5 /system ext4 ro,barrier=1,discard wait,check
/dev/block/mmcblk1p6 /data ext4 nosuid,nodev,noatime,barrier=1,noauto_da_alloc,discard wait,check,encryptable=footer
/dev/block/mmcblk1p7 /cache ext4 nosuid,nodev,noatime,barrier=1,discard wait,check
/dev/block/platform/msm_sdcc.1/by-name/SDCard /mnt/int_storage ext4 nosuid,nodev,barrier=1,noauto_da_alloc,discard wait,check
Click to expand...
Click to collapse
ramdisk.cpio/init.target.rc:
(SEARCH FOR /system)
on post-fs
mount ext4 /dev/block/mmcblk1p5 /system ro remount barrier=1
Click to expand...
Click to collapse
Just do the same for ramdisk-recovery.cpio. For example:
ramdisk-recovery.cpio/etc/recovery.fstab
/boot emmc /dev/block/mmcblk0p4
/system ext4 /dev/block/mmcblk1p5
/cache ext4 /dev/block/mmcblk1p7
/data ext4 /dev/block/mmcblk1p6 length=-16384
/sdcard ext4 /dev/block/mmcblk0p15
/external_sd auto /dev/block/mmcblk1p1 /dev/block/mmcblk1
Click to expand...
Click to collapse
And replace mmcblk1p5~p7 with p2~p4 then do it all again for 9.2.A.0.295's ramdisk.cpio & ramdisk-recovery.cpio
NOTE: All these fstab and rc files should be rw-r—r-- and owned by root:root. Otherwise the system may fail to boot.
Now repack the ramdisk.cpio, ramdisk-recovery.cpio and then the whole ramdisk.
4. Installing the guest systems
Take notice of the texts in red. Change them to fit your needs.
a. Preparing the guest systemsIf you are installing full stock ROM (FTF format), you can use Flashtool to dump the system image (Flashtool > Tools > Sin Editor, load system.sin from FTF archive and dump data). Then write the image to the sdcard by “dd if=system.ext4 of=/dev/sdb2“ on the computer.
If you are installing ROMs in ZIP format, you need to modify updater-script and replace all (for 9.1.B.1.67 in my example)
/dev/block/mmcblk0p12 or /dev/block/platform/msm_sdcc.1/by-name/System to /dev/block/mmcblk1p5
Click to expand...
Click to collapse
/dev/block/mmcblk0p13 or /dev/block/platform/msm_sdcc.1/by-name/Cache to /dev/block/mmcblk1p7
Click to expand...
Click to collapse
/dev/block/mmcblk0p14 or /dev/block/platform/msm_sdcc.1/by-name/Userdata to /dev/block/mmcblk1p6
Click to expand...
Click to collapse
And
remove /dev/block/mmcblk0p4 or /dev/block/platform/msm_sdcc.1/by-name/Kernel formatting/writing lines
Click to expand...
Click to collapse
Then repack the ROM and push it into phone's internal sdcard.
b. Boot the guest kernel/systemRemember we have zImage and modded ramdisk for each guest system? adb push them to /data partition. The kexec binary is needed as well. Now you can use the kexec binary(check the beginning of this thread) to boot your guest kernel and then recovery.
For example:
I pushed 295 kernel zImage to /data/boot4.3/zImage-stock, modded ramdisk to /data/boot4.3/initrd-stock, and kexec binary to /data/kexec. Now execute as root:
Code:
cd /data
chmod 755 kexec
busybox sync
busybox mount -o remount,ro /system
busybox mount -o remount,ro /cache
busybox mount -o remount,ro /data
busybox sync
./kexec --load-hardboot [COLOR="Red"]./boot4.3/zImage-stock[/COLOR] –initrd=[COLOR="Red"]./boot4.3/initrd-stock[/COLOR] --mem-min=0x85000000 --command-line="`cat /proc/cmdline`"
busybox sync
./kexec -e # phone reboots and guest kernel (295) starts
NOTE: the guest kernel's cmdline may not be exactly the same as the host one. However, it doesn't matter much. 67 and 295 both boot fine using the same cmdline as OmniROM. Since bootloader will append some parameters to the command line, using guest's sec3 without appending these parameters manually is not a good idea.
c. Preparing filesystems and installing ROMs in ZIPAfter the phone reboots, press Vol buttons at purple LED to go into recovery. Now you are in the recovery for your guest system (295).
FORMAT (not wipe) /data and /cache there. For ZIP ROMs you need to format /system as well.
Then install the modded ZIP file if needed. You can also flash SuperSU or anything else to this guest system in the recovery (remember to check if there are wrong block device paths in updater-script).
After finishing the installation of one guest system, reboot and you will go into the host ROM. Execute the commands again and specific the next guest system's zImage and ramdisk to boot into the next guest system. Then do the formatting and flashing things as described above.
5. Boot into guest systems
Once you finish installing all the guest systems, reboot. Then in the host ROM you can execute the commands in Step 4 again to boot into the corresponding guest system. Don't press any key after the reboot. If there's nothing wrong, you will see the bootanimation and then the Android system. Since external sdcards may not be as fast as internal storage, the first boot may take very long time. If you see the bootanimation, just be patient and it will boot up finally.
===========================================================
I know I can't speak English well and it's hard to make myself clear. So if you feel confused, please post your questions here so that everyone who knows the answer will be able to help.
And if you are skilled in Android things, you can choose your own way to achieve the goal:
Partition the sdcard → Mod fstsb and rcs to mount partitions on sdcard to /system etc → Mod the ROM installation script → Boot into guest recovery to format(initialize) data & cache &system and flash ROM → Boot into the guest Android OS
Click to expand...
Click to collapse
This is a little bit complicated. But I do hope this will add more fun to our device
Thanks for your sharing
got it
Although this is labeled for the Xperia TX, after reading through everything, it looks like this works on all devices, you just have to change a few things. Good job putting this together! (Even though I don't have an Xperia TX)
r3pwn said:
Although this is labeled for the Xperia TX, after reading through everything, it looks like this works on all devices, you just have to change a few things. Good job putting this together! (Even though I don't have an Xperia TX)
Click to expand...
Click to collapse
Yeah, it seems that the guide applies to all devices with patched kernels
updateing said:
Yeah, it seems that the guide applies to all devices with patched kernels
Click to expand...
Click to collapse
This guide is nice, full of content, and detailed, but wouldn't it have been easier, though, to just make a MultiROM port?
r3pwn said:
This guide is nice, full of content, and detailed, but wouldn't it have been easier, though, to just make a MultiROM port?
Click to expand...
Click to collapse
I have thought of porting MultiROM, but I'm running a tight schedule...sorry
Whether this Xperia V can also be made from ??
Mircinko96 said:
Whether this Xperia V can also be made from ??
Click to expand...
Click to collapse
It's applicable to Xperia V in theory. But you need a kernel with kexec hardboot patch, which hasn't appeared yet (as far as I have seen). If you know how to compile a kernel, you can try patching the kernel yourself.
.........
do I need linux to unpack kernel?