Related
Problem: Changes to the system partition are lost when Linux flushes the disk cache: http://pastebin.com/cm75Z9UA
These instructions are a workaround to provide temp root like normal plus persistence because /system /data and /cache are partitions on your SD card. This lets you reboot and even factory reset, while being able to easily restore your settings and such by re-rooting and mounting your SD card partitions back over the internal partitions.
Prerequisites:
SD card partitioned with four partitions:
6GB as fat (for your data, can be bigger or small depending on your card size)
400MB ext3 for /system
1.3GB ext3 for /data
200MB ext3 for /cache
On the phone, enable "USB debugging" in Menu -> Settings -> Applications -> Development
On a PC with the Android SDK tools (adb) installed and working:
adb push Superuser.apk /data/local
adb push busybox /data/local
adb push rage /data/local
adb push resume /data/local
adb push root /data/local
adb push rsync /data/local
adb push setup /data/local
adb push su /data/local
adb install Term.apk
adb shell chmod 755 /data/local/busybox /data/local/rage /data/local/setup /data/local/resume /data/local/rsync /data/local/root
On the phone, open "Terminal Emulator" and type:
/data/local/rage
Wait for it to say "[+] Forked NNNN childs." then press the back button.
Open "Terminal Emulator" again and it should force close.
Open it one more time and the prompt should display "#". Then type:
/data/local/root
/data/local/setup
You may need to re-root after it reloads the GUI, but then it will stick. setup is a script that mounts your SD card partitions and copies the existing. It should only be run once unless you want to erase what you have there previously. This step wont work if you SD card is not partitioned properly.
On future power-ons, run this after temp-root instead of setup:
/data/local/resume
and you should get your Android back how it was.
is it suppose to scan through all apps on phone then reboot
Thanks muchly, I'll try this when my G2 arrives.
I have a question about this method. It looks to me that what setup does is copy the entire system, data, and cache to the SD card. Then, when you run resume, it uses rsync to bring the main system (in the onboard flash) up to date from the SDcard version, and then any changes, even if not actually written to the main system partition due to the HTC copy protection, get written to the sdcard copy of the system. Very clever (if I'm reading this write, otherwise, still clever, but me not so clever as I mis-understood).
The question is this: Are there any glitches or instabilities generated by suddenly changing the system files after the OS is already booted? Do I have to make sure to do this before I begin using my phone after boot or risk making changes that I will then loose when I run resume?
Thanks again for the work putting this together!
Sheep
Sheep, you understand almost completely. Setup does copy the existing data from the internal phone memory to the SD card. However, it then (like resume) doesn't copy anything back, it just mounts the system, data, and cache partitions from the SD card on top of the internal ones.
I had issues with the internal memory reverting back after I make changes to it. It seemed to happen over a short time, or was triggered by things like mounting the SD card to a computer.
I've been using this for about 24 hours with no problems. I've done a couple fresh boots and ran resume. But I didn't test the instructions from scratch, so if anyone tests and finds a problem, let me know!
Any performance hit because of running from SD?
I haven't really noticed any.
How does this impact battery life?
Sent from my T-Mobile G2 using XDA App
Can't say, I've had my phone hooked up most of the time through adb looking for root. Just did this for fun and because I was sick of re-rooting all the time.
looks interesting I'll try it out tomorrow
Sent from my T-Mobile G2
so your sd card has to be partitioned pryor to trying this
pre-partitioned card?
thatruth132 said:
so your sd card has to be partitioned pryor to trying this
Click to expand...
Click to collapse
yes it does
texasaggie1 said:
yes it does
Click to expand...
Click to collapse
and how do i do this on a non-rooted device
thatruth132 said:
and how do i do this on a non-rooted device
Click to expand...
Click to collapse
Use your G1 to partition the card.
Brad
You can also connect your phone to a Linux computer (a LiveCD would be fine) and use gparted or fdisk. Don't forget to backup the contents of your card first!
Pretty cool. But I think I'm gonna wait for a more permanent solution....
sheek360 said:
Pretty cool. But I think I'm gonna wait for a more permanent solution....
Click to expand...
Click to collapse
There are no roms available yet any ways, so to a non dev, non cook like me, the Root is pretty much useless
I'd read that the currently available root was good until a reboot, then I saw this thread that made rerooting after a reboot much easier. Since then I've seen some posts that seem to indicate that a root may spontaneously disappear even without rebooting. Is this the case, some permissions may be lost even if you don't reboot?
I was ready to pull the trigger on this permanent-temporary root until I read that. I'd like to be able to import my old wpa_supplicant.conf file and get my corp ipsec vpn working. I'd also like to be able to get wifi-tether working (although I rarely use it), but if root won't stay 100% until a reboot, then I'm not going to bother.
Dalamak said:
There are no roms available yet any ways, so to a non dev, non cook like me, the Root is pretty much useless
Click to expand...
Click to collapse
Not true. I'm not a dev or a cook, but there are things that you can make the phone do with root besides adding a theme or ROM.
wifi tether
ipsec vpn
backups
etc...
smasraum said:
I'd read that the currently available root was good until a reboot, then I saw this thread that made rerooting after a reboot much easier. Since then I've seen some posts that seem to indicate that a root may spontaneously disappear even without rebooting. Is this the case, some permissions may be lost even if you don't reboot?
I was ready to pull the trigger on this permanent-temporary root until I read that. I'd like to be able to import my old wpa_supplicant.conf file and get my corp ipsec vpn working. I'd also like to be able to get wifi-tether working (although I rarely use it), but if root won't stay 100% until a reboot, then I'm not going to bother.
Click to expand...
Click to collapse
With temp root on the internal system partition, writes would revert back after certain things (after mounting the sd card to a computer through the phone and disconnecting it, I'd always loose root). When running /system from an sd card, no writes can be reverted because none are made, so I've never had to re-root.
how to partition an SD card?
thatruth132 said:
and how do i do this on a non-rooted device
Click to expand...
Click to collapse
I used gparted in ubuntu to do mine. Like SAINTH said, the install disk for ubuntu is also a livecd so you dont even have to install ubuntu if u dont want to
Hey all,
Wanted to post CM7 here for everyone to enjoy.
Neopeek has been working hard to get this build up and running, he's been doing great work!
Neopeek's Original Post - if you wish to see Neopeek's original post about the CM7 topic.
Also, since now I am using his new ClockWordMod method - CWM Recovery thread
As is stated in the title, this is mainly for devs/testers. Lots of things are broken, and there will be frequent updates.
There are two methods to using this build:
1) ClockWorkMod (requires 3 separate ext2 partitions)
2) Loop'd system.ext2 image (like XDAndroid) [In progress]
The benefit of #1 is a dedicated system/data partition, and *partial* USB mass storage support.
The benefit of #2 is, it's easier .
I still have to work to get #2 up, but I wanted to post #1 ASAP. Lots of work to flesh out the post to, be patient!
I've been holding off on releasing this CWM version of CM7, because I'm still having a lot of bugs with it. Still needs quite a bit of work, but it's getting late for me tonight - I am going to release it, let me know if you guys make improvements, I'd love to incorporate them!
Main issues seem to be related to my durn CDMA device. Need to break into some logs to see what's goin on, it may be a little while! I think GSM folk will be fine. Let me know!
Downloads
Download #1
How-to
Method #1 (ClockWorkMod)
****WARNING****
If you setup dedicated partitions using this method, normal XDAndroid builds will think that you want to use dedicated partitions. I had to modify the init to get it to work correctly (I basically broke the partition detection in the init). It's not pretty, but I don't know of a better way to resolve that issue - let me know what ideas you guys have!
Setup:
You will need to create three (3) ext2 partitions on your SD card. This is not extremely simple, but by no means impossible .
If you're using Windows, I like the Mini Partition Tool. If you're in Linux, I usually use gparted.
This takes a little bit of planning - but in total, I would say you need a minimum of 450mb of space for all three ext2 partitions. So work out how much free space is left (if you want a bigger data partiton, or system partition account for it!) and make that the first partition - FAT32. Make sure all the partitions are "primary", not "logical"! See the partition layout below:
1 - FAT32 Primary (remainder of card)
2 - ext2 Primary (at least 150mb, system partition)
3 - ext2 Primary (at least 250mb, data partition - I wouldn't go over 1gb here)
4 - ext2 Primary (at least 50mb, cache partition)
Don't worry about putting anything in these ext2 partitions, everything is populated by Android and CWM. The FAT32 partition is used to kick off Android, while system, data and cache are all ext2 partitions. Reason for this is, hopefully if things go haywire we can blast out cache, not data . Also, it should be easier to update using this method than previously.
Extract the file. Look at the folder it created (npkboot). Copy the entire npkboot folder to the root of your SD (for now this is required - the init assumes there's a /sdcard/npkboot/tmp folder). There will also be an update.zip, in this case update-cm-7.0.0-neopeek.zip. Put this at the root of your SD card (this makes finding it in the menu much easier!)
Copy the appropriate startup.txt from the STARTUPS folder.
Find haret.exe in th npkboot folder. Run it, and watch the boot process carefully! It will ask you to hold the vol down button to enter recovery, and you have 10 seconds to do so.
Assuming you manage to do this correctly (I had some trouble at first ) you should see an icon like a hat. Wait for the menu.
Buttons:
End key - back (back button seems to do this as well...)
Send key - enter
Vol up - up
Vol down - down (menu button seems to do this as well...)
If this is the first install, go to "install zip from sdcard". Then "choose zip from sdcard" This will install the system image to the system partition from the update.zip.
If you need to wipe the data partition, you can do that under "mounts and storage". You shouldn't need to do this unless you're going from gb -> froyo or visa-versa. Froyo -> froyo should 'just work', as always YMMV.
There are A LOT of options in replimenu. The only ones I have used are install, format /data, /system or /cache and Reboot. According to Neopeek, there are several things that should not be used:
Neopeek said:
* Don't use "factory wipe" in CWM (you have been warned )
* Don't use "format sdcard" unless you know what you do (you have been warned )
* Don't use "partition sdcard" unless you know what you do (you have been warned )
Click to expand...
Click to collapse
Once you've installed Android, go back to the main menu and "reboot system now" There are some bugs, for example "reboot recovery" and "power off" all just reboot the phone to WinMo.
Boot haret again, but this time don't hold the vol down to enter recovery - boot as normal!
#2: Much simpler method, similar to XDAndroid builds.
Extract the file to your desktop. Go into the CM7 folder, look for the STARTUPS folder - grab the appropriate startup.txt, move it to where haret.exe is.
Copy everything in the CM7 folder to the root of your SD card - if you want to run it from a folder, create a rel_path=CM7 statement in your startup.txt after the set cmdline (if you want a different folder, change the CM7.)
Grab the ts-calibration file attached to this post (for RHOD), or go to this post for a list of ts-calib's. You can also create your own on boot, but may have to revert to an older kernel to do so.
Run haret.exe!
****Not Working****
CDMA seems broken - still! I did some testing with hyc's RIL and it's still busted, so there's something in the system image messing with it - Airplane mode was checked, and I could not uncheck it.
In addition, phone.apk seems like a forceclosefest. Neopeek did point this out in his original thread...
Mobile data - broken (Fixed soon)
Wifi - broken (Fixed soon)
System needs optimization for RHOD - was originally build with DIAM in mind - so it's a little slow.
Failed wakes seem pretty bad - sometimes it is quite difficult to wake the phone.
Boot animation seems to be not present - I'm looking into fixing it, probably graphics libs if anything that's broke it.
Dev Content
This new method should be great for anyone who wants to make their own updates - you can easily peek into the system image and make changes at will, then just install the new system image! You can even rolll updates instead of an entire system image if you wish.
The script language in ClockWorkMod is called "Edify", see this thread to learn about the syntax. This is related to the META-INF folder you see in the update zip.
There's a few differences in the rootfs', the main being the init. There's also some additional files it looks like neopeek added for Recovery specifically.
This is amazing work. Props to all involved.
Does anyone have any feedback on this build?
arrrghhh said:
Long story short, you need a ext2 partition and a fat32 partition - ext2 needs to be between 400-600mb, fat32 can just take the remainder of the card's space.
Click to expand...
Click to collapse
Is there a reason for the 600mb upper limit? If I use 1 gb, will it cause problems or will it not use it and just waste card space?
PM message
Arrrgh,
Disregard the PM I sent you.
I read the instruction and like you said, its not simple. So I will wait until you upload the easy to run load.
Thanks
Ltilt2 said:
Arrrgh,
Disregard the PM I sent you.
I read the instruction and like you said, its not simple. So I will wait until you upload the easy to run load.
Thanks
Click to expand...
Click to collapse
Sorry, I need access to a Linux box to do the 'easy' build... I will when I get home tonight from work, promise .
vinceweis said:
Is there a reason for the 600mb upper limit? If I use 1 gb, will it cause problems or will it not use it and just waste card space?
Click to expand...
Click to collapse
You can make it as big as you want I guess... I'm not sure how neopeek sets up the data partition to be honest, I'd have to ask him.
Edit - in lieu of the post below, I adjusted the first post to say it needs to be at least 400mb .
vinceweis said:
Is there a reason for the 600mb upper limit? If I use 1 gb, will it cause problems or will it not use it and just waste card space?
Click to expand...
Click to collapse
I have 700 mb and is working well,you can use as much as you want
Ltilt2 said:
Arrrgh,
Disregard the PM I sent you.
I read the instruction and like you said, its not simple. So I will wait until you upload the easy to run load.
Thanks
Click to expand...
Click to collapse
Is easy just use mini tool partition wizard,delete the main partition on the sd-card
and do two,one fat32 primary and one ext2 primary,then extract the archive and put the proper startups in npkinstall and in root
from the phone run install.exe
and after the reboot use haret.exe
I wonder if CDMA data is working with this...that is my biggest issue with GB right now...
HELICOPTER88 said:
I have 700 mb and is working well,you can use as much as you want
Is easy just use mini tool partition wizard,delete the main partition on the sd-card
and do two,one fat32 primary and one ext2 primary,then extract the archive and put the proper startups in npkinstall and in root
from the phone run install.exe
and after the reboot use haret.exe
Click to expand...
Click to collapse
yeah easy for you to say, that sounds complicated.
I will wait for the other one.
Do you know the ETA?
i have
- downloaded the file cm7new.tar.gz
- made primary fat32 and ext2 partitions
- extracted the file cm7new.tar.gz to the root of the fat32 partition
- got a lot of linux folders
but i am missing
- npkinstall folder
- startup.txt
- install.exe
- haret.exe
- startup folder
Where are these files?
Tippfehler said:
i have
- downloaded the file cm7new.tar.gz
- made primary fat32 and ext2 partitions
- extracted the file cm7new.tar.gz to the root of the fat32 partition
- got a lot of linux folders
but i am missing
- npkinstall folder
- startup.txt
- install.exe
- haret.exe
- startup folder
Where are these files?
Click to expand...
Click to collapse
Still need to upload, sorry!
Tippfehler said:
i have
- downloaded the file cm7new.tar.gz
- made primary fat32 and ext2 partitions
- extracted the file cm7new.tar.gz to the root of the fat32 partition
- got a lot of linux folders
but i am missing
- npkinstall folder
- startup.txt
- install.exe
- haret.exe
- startup folder
Where are these files?
Click to expand...
Click to collapse
I was looking at that too when extracted the files and didn't see what you are also missing.
Sorry about the confusion guys, I probably shouldn't have put the download link up before I was done .
I just fixed it, so #1 is good to go! I'll get #2 up later, thanks.
Another noob question, but the rootfs, kernels, oc, etc from the xdandroid builds will work the same on these?
(...solved...)
it's necessary create a swap partition?
What works in this build?
fishingmedic said:
Another noob question, but the rootfs, kernels, oc, etc from the xdandroid builds will work the same on these?
Click to expand...
Click to collapse
The rootfs is more or less collapsed in these.
Kernels are straight from XDAndroid repo.
OC is the same, startup.txt is fairly similar .
Quincux said:
it's necessary create a swap partition?
What works in this build?
Click to expand...
Click to collapse
Swap is not necessary.
Most things that work in XDAndroid work in here. Lots of other things are broken here tho .
Okay, downloaded and installed without problems.
First impressions:
Absolutely great build in terms of response!
No delays in menus, etc.
Also, this looks like the first build that may have little or no clock delay, so no need for clocksync !!! (to be confirmed since I did not use it very long, die to issues below)
However...
1) No WIFI
2) No Mobile data (2G/3G)
3) camera not working (could be just blackstone)
- maybe other issues, decided to wait for more feedback before continuing, without market access there's little point...
Device: Blackstone
Kernel: extensive testing with provided one (1276), later switched to 1277, to fix audiostuttering, no wifi or mobile data in either...
As a reference, used many NeoPeek / XDAndroid builds, generally got WIFI/Mobile data working until now...
Love to hear if someone else (blackstone?) got WIFI/2G/3G working...
Oh, well, as I understood, this was an early "developer" release, still plenty of room for improvements!
Cheers,
Robbert
I've tested this and it works. I only have a class 2 SDcard, so my testing shows it's really slow, a faster card would probably help.
With just this class 2 SD card, the boot-from-sd process is really only useful to see if the ROM being tested will straight-up brick your device or not.
Edit!
A class 6 card works fabulous! I'm posting from a tweaked version of mmarz's port of ath3nos' port of cm7 running from my brand-new class 6 card right now.
This process is hacked together from multiple other devices' howtos here on xda, sorry I don't know who to credit for the bits and parts. All of it is pretty generic, actually, and might well be applicable to other devices when tried as a whole.
For the moment, I'm only posting a brief skeleton how-to without specific walkthroughs for the steps, and I don't really want to upload many files until more of the bugs are swatted.
The following info should be enough for you, the savvy dev, to put the ROM of your choice on your SD card and boot it (or watch it fail to boot) without risk of bricking your device!
noobs, don't you dare, bricking is always a risk if you don't know your way around fastboot and adb!
Of course, savvy dev or not, a fresh nandroid backup is MANDATORY before hacking at your phone like this.
Standard disclaimer:
There is always a possibility of bricking your phone when messing with adb and fastboot.
If you're not willing to take that risk, don't try this at home (or at work, or school....)
Here goes:
The basic plan I followed was:
1) make and format 3 extra ext2 partitions after the default fat32 on the SD card, in this order: data (at least 180Mb) , system (170Mb to match stock), and cache (102Mb stock).
2) split up the boot.img from your chosen ROM so you can mod the ramdisk.
edit: turns out this next step in the quote is not required, there is an easier way.
A nifty command called devwait for init.rc
3) compile a modified init, adding a "pause (5);" after the ANDROID text. It goes on line 569 in the gingerbread init.c from a recent repo of google source.
use the newly compiled init in place of the init from the ramdisk.
since getting the android source uses so much time and bandwidth, I'm being nice and attaching a modified gingerbread init. If you test it with a froyo ROM and it doesn't work, don't blame me. If it does work with froyo ROMS, let me know!
Click to expand...
Click to collapse
3) change your init.rc from the ramdisk as follows:
replace the "mount yaffs2 [email protected] /system" , cache, and data lines with
Code:
devwait /dev/block/mmcblk0p3
mount ext2 /dev/block/mmcblk0p3 /system nodev noatime nodiratime
mount ext2 /dev/block/mmcblk0p3 /system nodev noatime nodiratime ro
devwait /dev/block/mmcblk0p2
mount ext2 /dev/block/mmcblk0p2 /data nodev nosuid noatime nodiratime
devwait /dev/block/mmcblk0p4
mount ext2 /dev/block/mmcblk0p4 /cache nodev nosuid noatime nodiratime
be sure to comment out any other mounts which go to /system anywhere, like the "mount squashfs [email protected]/system/blahblah/blah.sqf /blah/blah" lines in the aospCmod init.rc
4) repack your boot.img, with the correct cmdline ("mem=477M console=ttyMSM2,115200n8 androidboot.hardware=thunderc" works,) etc.
5) prepare the ext2 /system partition with your target ROM /system files.
How to load the ROM:
steps a) to f) done on your PC. step g) is done on the phone.
a) Unzip the ROM on your PC, to get at the files to copy to the new /system directory in adb, and allow you to modify the updater-script.
b) Mod that ./META-INF/com/google/android/updater-script as follows:
As an example, I removed the following from the aospCmodOV-5-16-11 updater-script:
everything except the "ui_print" "symlink" and "set_perm" lines, including the "unmount" line at the end of the script.
I thinned it down because the update-binary wants to write to MTD partition for /system, and I didn't want or need that to happen.
I did need it to install the symlinks and permissions, though.
Without those, the keyboards kept FCing, and the phone couldn't connect to the network.
c) rezip the ROM with the modified updater-script.
d) boot phone into recovery and connect to PC with cable.
e) adb push or otherwise copy the modified ROM.zip to your sdcard.
f) next, copy /system from the unzipped ROM to the new partition with adb
Code:
adb shell
mount -t ext2 /dev/block/mmcblk0p3 /system
exit
adb push /path/to/unzipped/ROM/system /system
g) on phone, in recovery: install .zip from sdcard
select the new ROM.zip you reassembled and pushed to the SD card
select yes, you really want to install the .zip
this should write the /system symlinks and permissions to the new /system partition.
Click to expand...
Click to collapse
6) back on your PC, still connected to phone with cable in recovery;
Code:
adb reboot bootloader
fastboot boot /path/to/boot.img
Step 6 is important!
this will boot from your modified boot.img without actually flashing it into the phone's NAND, so a reboot (or restart after battery pull in case of issues) just goes to your regular installed ROM in the phone.
That's about it for now. It's pretty much a hack as yet, but it's cool in a geeky way to be able to do this.
<reserved for future use>
Thanks! This should be very helpful to devs and those of us who are adventurous with our phones!
Very interesting concept, I'd love to see how many uses this could have!
bump...
with a class 6 card, ath3nos/blarf cm7 runs great off sd.
even feels a little snappier than running from the phone mtd partitions.
I must benchmark soon to verify.
I'm really surprised no-one seems interested, I guess this is too old-hat, like a debian chroot
bigsupersquid said:
bump...
with a class 6 card, ath3nos/blarf cm7 runs great off sd.
even feels a little snappier than running from the phone mtd partitions.
I must benchmark soon to verify.
I'm really surprised no-one seems interested, I guess this is too old-hat, like a debian chroot
Click to expand...
Click to collapse
This is good work, but I think people require a bit more hand holding. How about publishing some of the modded files?
I personally still have problems recompiling a ramdisk.
mmarz said:
This is good work, but I think people require a bit more hand holding. How about publishing some of the modded files?
Click to expand...
Click to collapse
I can post files one rom at a time, because the ramdisk and kernel will be a bit different for each rom, and so will the permission/symlink updater-script.
first, I'll have to get rom-dev permission, because they get modded, and also cause it's nice to have permission.
I personally still have problems recompiling a ramdisk.
Click to expand...
Click to collapse
fastboot provides a fantastic shortcut for that, if you cpio-gzip the ramdisk together after editing it to your specs
from http://android-dls.com/wiki/index.php
in a command line linux shell, from the directory containing your unpacked ramdisk,
Code:
find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz
will put newramdisk.cpio.gz in the directory above the one containing your ramdisk
Click to expand...
Click to collapse
fastboot can make the boot.img for you and either dump it into the phone (assuming your shell current directory contains your kernel (zImage) and ramdisk (newramdisk.cpio.gz))
Code:
fastboot -c "mem=477M console=ttyMSM2,115200n8 androidboot.hardware=thunderc" flash:raw boot zImage newramdisk.cpio.gz
or boot your phone from the assembled image without actually flashing it in.
Code:
fastboot -c "mem=477M console=ttyMSM2,115200n8 androidboot.hardware=thunderc" boot zImage newramdisk.cpio.gz
those fastboot lines assume an optimus v (or s.)
looking at all the great work you've posted on the forums, I'm surprised you have trouble handling anything to do with these phones!
I'm slowly working up to a modded recovery to install-to-sd directly and avoid all this hacking.
Nice, thanks for that. I had no idea fastboot could do that.
mmarz said:
Nice, thanks for that. I had no idea fastboot could do that.
Click to expand...
Click to collapse
happy to share.
I only learned fastboot could do that when I seriously started in kernel testing after finally getting one to compile without errors. I didn't feel like bricking my phone to test the fresh kernel, and researching fastboot showed me its capabilities... I could've just typed fastboot with no arguments and that makes it list its parameters.
it's really helpful for this mod, because you can just reboot into your stock rom without having to reflash anything.
plus it's nice to just tweak the ramdisk and let fastboot do the work making a new boot.img for you when testing weird stuff like this.
bigsupersquid said:
happy to share.
I only learned fastboot could do that when I seriously started in kernel testing after finally getting one to compile without errors. I didn't feel like bricking my phone to test the fresh kernel, and researching fastboot showed me its capabilities... I could've just typed fastboot with no arguments and that makes it list its parameters.
it's really helpful for this mod, because you can just reboot into your stock rom without having to reflash anything.
plus it's nice to just tweak the ramdisk and let fastboot do the work making a new boot.img for you when testing weird stuff like this.
Click to expand...
Click to collapse
Very cool i loved this idea when it was executed in a way over at Ubuntdroid for the intercept when i was doing alpha testing. Very convenient for many of the scarier tests when i wanted to keep my existing system intact. The big difference was that on the intercept the bootable partitions were written into the kernel. Downside you couldn't use it to test kernels but could switch kernels from the phone and flip-flop between completely isolated systems on the go without a computer. Which was great when i wanted to test a new ROM on the way to work but i needed my phone when i got there and had to have a painless method of switching to my usual running system. So i'd flash a "non SD" kernel and i was back up and running in just a minute or so.
I'm excited to play with this when i have some free time.
Thanks dude!
you could easily use an update.zip for each of the sd-boot and regular phone boot.img files and swap between working systems with those in recovery.
before getting the fast sd card, I was looking at this more as for testing foreign roms than two-system operation, but now I see that would work too.
for a second-system option I was looking at a market-enabled rom on sd since I don't use g-apps on my daily driver.
note: the GB rom I'm running on won't 'see' a card with more than four partitions properly, and won't mount the vfat partition with vold, although you can manually mount and access the first four partitions including the vfat. android just won't admit it's there. and I couldn't get at a fifth partition through the phone os, even though my pc could see it fine (to get 5 partitions I had to use an extended partition to contain most of the virtual partitions)
android could read virtual partitions in an extended partition just fine as long as the total number on the card didn't exceed four.
I learned a neat trick today.
going through the init.rc from the stock rom, I noticed a section at the beginning which was labeled 'on emmc' which would imply running from a card if the device hardware lacked nand flash memory.
I'd read on xda while researching this concept of boot-from-sd about an unspecified wait-for-device command in init.rc, but most of the info I've gotten on init scripting language has come from picking apart init scripts, as google has not documented the available commands very well.
long story short, I tried using devwait with the regular init and it worked just fine to mount the ext partitions. yay!
first post edited to reflect the improved method.
I've also been testing a recovery mod. if recovery.fstab is modified in the recovery ramdisk (or a fakeflash recovery) then the recovery will copy a tweaked rom.zip to the ext /system partition with some minimal modifications to the updater-script and a few commands in the adb shell.
the recovery with the modded recovery.fstab can also back up from and restore to the sdcard ext /data and /system partitions.
I will update the first post with more specific instructions as I hammer them into something consistent.
soon I'll be ready to release a modded fakeflash recovery to make experimentation easier, as well.
Hello fellow I9000 users.
tl;dr - This fixes your low storage notification problems just by flashing it on CWM.
Disclaimer
First of all, I'd like to inform you that this post is a compilation of the work done by drafnel on the CyanogenMod forums, revthanki on the XDA-Developers forum, and as such I take little to no credit in it, as all I've done was ask for drafnel to help me in the cleanup code for me to put it in a flashable zip.
Sources:
http://forum.cyanogenmod.com/topic/39718-workaround-for-small-datadata-partition/
http://forum.xda-developers.com/showthread.php?t=1444333
Also, as you should know, you take full responsability should data loss or other kinds of damage occur.
Introduction
Lot's of people have encountered the problem where their /datadata partition fills up and then apps begin force closing. This is often confusing since there is usually a lot of space available on the internal 2GB storage partition. But these are two different partitions on cyanogenmod. The created the datadata partition on the fast internal memory so that apps would start up and run faster (i.e. less lag), but it is only about 170MB (which can't be helped).
One thing that can be done is to move the contents of /datadata onto the 2GB /data partition. That will solve the space problem, but then you have the lag problem. So, what we need is for the files that take up a lot of space to reside on the 2GB partition and the files that are accessed frequently by an app to reside an the fast 170MB partition. The files that are accessed often, or that affect app startup speed are the sqlite database files and the xml preferences files. These reside in the databases and shared_prefs sub-directories in each app directory. Drafnel has written a script to perform these operations.
Requirements
Samsung Galaxy S based phone (GT-I9000, Vibrant, Fascinate, Captivate, etc.)
Kernel that supports init.d scripts
How to use it?
As you would flash a ROM update or a Kernel:
Download the file to your sdcard.
Reboot your phone into CWM.
Choose 'install zip from sdcard', and choose the script from there.
It will run on boot everytime. It's pretty light so your total boot time shouldn't suffer. It will only do the operations if they are needed, and it will clean up after itself. No need to worry about broken links or stale resources.
What it actually does?
On every boot:
Runs a check to see if /data/data is still symlinked to /datadata/
Moves everything that isn't performance critical from /datadata/ to unlinked /data/data/
Cleans up old databases from uninstalled apps
Other stuff to watch out for
Titanium Backup users should tick the Preferences > Troubleshooting settings > Follow all symbolic links option
SlimICS users should follow this procedure
Changelog
11032012 - First working release.
LOL. I posted a request for exactly this script in the mintberry thread a few days ago!
Good work fella, Cheers.
OMG yeah! Was waiting for something like that . Will give it a try next time I'll encounter this problem .
Thanks mate.
Just flashed it. Cheers!
Sent from my GT-I9000 using xda premium
I had HUGE problems with Titanium Backup.
I lose all by backups some weeks ago because symlinked were corrupted after restore!
Njcki said:
I had HUGE problems with Titanium Backup.
I lose all by backups some weeks ago because symlinked were corrupted after restore!
Click to expand...
Click to collapse
According to this post, you can now force TB to follow all symbolic links for backup and restore.
what if i already moved all my apps data to sdcard? do i move it back to internal memory then flash the script, or just flash the script then move the data to internal memory? which is the correct way?
naTrium said:
According to this post, you can now force TB to follow all symbolic links for backup and restore.
Click to expand...
Click to collapse
Thanks! I'll try
AFAIK, if you have moved your apps to the SD card using the regular method (Apps2SD), the script will still work. This is because there's always leftover data on the phone, which then points to /.android_secure/ on the sdcard.
This script only changes the location of some data, but it's transparent to the phone.
If you don't feel safe about it, a full nandroid backup will restore the system to whatever setup you have now. (it also backs up what's mounted on the sdcard)
Well done! I knew I was never going to get round to this I'll close my old thread and redirect people here. Before I do so:
1) does the stock CM9 kernel support init.d scripts? If not stock kernel users will have to follow the manual method.
2) maybe it's worth putting a capitalised warning in your post to get people to set the option in Titanium Backup to follow all symbolic links
I flashed this script already but the low on space notification is still shown. It's definitely not working.
Do I have to create .nodatadata file inside /datadata and reboot now?
Sent from Ice-Cream flavored SGS GT-I9000 using Tapatalk
Free space in datadata folder,
Before flashing the script = 25mb
After flashing the script = 146mb
Definitely works without any lags.. one might experience lags on the first boot but after another reboot all gonna be super smooth like before!
Thanks a lot!!
It deleted some of my apps like Dolphin HD. I'm running CM9, with IcyGlitch Kernel. Oh well, restored.
Gr8 work
Many Thanks,
i have been waiting for this script ever since Darktremor Apps2SD (2010 !!! )
thank you!!!!!!!!!!!!!!
Great Job!
Excellent, it's very smooth like before, thanks a lot.
aha! that's the reason why all my apps suddenly began to lag like hell and some time after that force close. had only 1MB free space on /datadata partition lol. script works like a charm! thx
Sent from my GT-i9000 using xda premium
stfudude said:
I flashed this script already but the low on space notification is still shown. It's definitely not working.
Do I have to create .nodatadata file inside /datadata and reboot now?
Sent from Ice-Cream flavored SGS GT-I9000 using Tapatalk
Click to expand...
Click to collapse
I heard some kernels don't load init.d scripts on ICS, might be related to that.
finally......
before script 11mb and after got 168mb free space! thanks!
really nice stuff
ok ive been rooted for a good few month, i use links2sd with a second partition to free up internal space, but lately im getting error messages when updating apps that i dont have enough internal storage, i dont have many apps installed and i dont fancy wiping and starting again as this is what i did lastime! how can this be resolved?
I posted this on other thread, The guy had same question. Please search the forums before asking any question.
Anyways here's the answer.
Hmm. When I was new to link 2 sd I had same problem. Don't worry I got a fix. ^_^
1.Uninstall stupid system apps you don't use. We need to make space in system partition.
2. Download titanium backup and when u open it. Go to options select integrate davlic cache into rom. It'll take few minutes, when it's complete reboot.
3. Make sure all files are linked.
4. Clear cache occasionally.
5. If you still are low on space you may use this command as the last option.
Warning: you may have to reboot phone after installing a new app to run it for first time.
Go to terminal
Type 'su'
Accept superuser request.
Type 'a2sd cachesd'
Phone will reboot and may take some time to start.
6. That should be it. I'm running cm9 with link 2 sd and I have more than 100 apps still I got 75 mb free.
Click to expand...
Click to collapse