Related
First of all thanks to Amon_RA for this. I had no part in creating this. I am just providing a how to flash it. There may be an eaiser way but this is what worked for me.
First let me say I am on a Mac. If you are on windows the adb commands should work fine but I can't say how to get adb working for you.
1. download flash_image Here Link updated 3/17/10
2. Open the terminal and copy and paste the following commands.
adb shell [hit enter]
su [hit enter]
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system [hit enter]
3. In a new terminal window (don't close the original one).
adb push flash_image /system/bin [hit enter]
exit [hit enter]
4. Now in the original terminal window
chmod 755 /system/bin/flash_image [hit enter]
5. Now exit all termainl windows and reboot your phone.
6. Download Amon_AR's recovery Here.
7. Mount your phones sd card and drop recovery-RA-eris-v1.6.2.img on to it and eject your phone.
8. Open the Terminal and copy and paste the following commands with the phone connected to your computer.
8. adb shell [hit enter]
9. su [hit enter]
10. flash_image recovery /sdcard/recovery-RA-eris-v1.6.2.img
11. To get into recovery turn off you phone and hold the Volume Up + Power until it boots into recovery.
That's it.
I made an automator script the help all of you having problems getting adb working. Make sure you have the android sdk downloaded and named android-sdk Put it in your home folder and then run this script. Let me know how it works for you.
Disclaimer: I am not responsible for any damage you may do to your phone. I am only providing instructions on what worked for me. This is very beta. Good luck. Enjoy the nandroid goodness.
First link is Dead...........
ooopps Srry my bad, Its up.
You should mention that the chmod command is in the original terminal window. Also, you could do it in one window if you put:
adb remount
adb push bla /bla/bla
at the begining of everything.
adb push flash_image to /system/bin
Click to expand...
Click to collapse
I don't think there's a "to" in that command either. lol
testing567 said:
You should mention that the chmod command is in the original terminal window. Also, you could do it in one window if you put:
adb remount
adb push bla /bla/bla
at the begining of everything.
I don't think there's a "to" in that command either. lol
Click to expand...
Click to collapse
Thanks. I don't think the "to" is going to work either. I made the corrections.
Just a quick question. What does this boot too. Im new to all this phone stuff. I did the upgrade to 2.1 leaked so just been searching the forum here each day to see if a solution has come about. i just noticed v.1.6.2 in there so was curious as to what this will do.
Will this put the regular android on it or keep it the same, sorry just kinda getting started with android
coupla questions -
For northmendo:
Is the reboot in the middle of this even necessary? ( flash_image won't work right if /system is still mounted rw ?)
For testing567:
Do all the adb shell commands run as root against the 2.1_root install ... or maybe the above could be simplified even more by just running "adb root" first?
For Austinjs0102 (not a question)
This process only applies (at the moment) to phones with "2.1_root" - there isn't a path at present to go from "2.1_leak" to a rooted phone. Assuming that a way to roll back (or get root) for "2.1_leak" eventually is found, then the answer to your question is this: it is a process to apply a custom recovery partition to the phone that include tools that will allow you to perform complete phone backups and restore operations. This can be critical for devs who are experimenting with writing boot or system partitions to their phones - if something goes wrong with their experiments, they can "boot" their phone into recovery mode and restore back to a working configuration. To reiterate, though: this only applies to phones that are already rooted.
bftb0
Thanks a bunch that helps clear up info.
hopefully the hard working dev's here find a 2.1 leaked fix for us early people, if not then i may need to lose the phone lol.
Austinjs0102 said:
Just a quick question. What does this boot too. Im new to all this phone stuff. I did the upgrade to 2.1 leaked so just been searching the forum here each day to see if a solution has come about. i just noticed v.1.6.2 in there so was curious as to what this will do.
Click to expand...
Click to collapse
I am in same boat as you...
Let me start off by saying that I'm not a phone dev. I've done software development for many years, but never messed with the phone.
Can someone explain why we can't just load the 1.5 rooted PB001IMG.ZIP file over our 2.1 leaked handset? Is it a matter of the version number being lower? If so, since the 1.5 is rooted, couldn't someone just up the version number to whatever the 2.1 leak is plus one? Then, once it's loaded, write a little app to drop the number back where it should be?
TIA for the education.
Doc
DocTauri said:
Let me start off by saying that I'm not a phone dev. I've done software development for many years, but never messed with the phone.
Can someone explain why we can't just load the 1.5 rooted PB001IMG.ZIP file over our 2.1 leaked handset? Is it a matter of the version number being lower? If so, since the 1.5 is rooted, couldn't someone just up the version number to whatever the 2.1 leak is plus one? Then, once it's loaded, write a little app to drop the number back where it should be?
TIA for the education.
Doc
Click to expand...
Click to collapse
(I suppose I shouldn't respond, 'cuz DocTauri is jacking northmendo's thread. Sorry north!)
Doc,
I understand exactly what you are getting at... and also think I can explain why it's not easy.
First - what has been discovered so far was not a "root break-in", but rather an engineering ROM with root "built in". It is cryptographically signed so that a production phone will recognize the .zip file as a valid ROM. That first validation step has nothing to do with version numbers.
If the "SPL" on an unrooted phone was doing something as simple as looking at a couple of bytes in the initial file downloaded to the phone, then yes - doing what you suggest would work... just patch a few bytes using a hex editor. Unfortunately, the phone SPL is quite sophisiticated: it verifies the crypto signature on the entire zip file first, unpacks that zip, and then examines the contents of an individual file within the zip archive (and possibly even unpacks one of the YAFFS image files and then looks in a file within the YAFFS image) to read version numbers.
That means that the fundamental issue is the cryptographic signature on the .zip file. If you do anything which breaks step #1, step #2 (version # checks) are never reached. Certainly an individual file could be byte-patched, and then images and zip files could be re-assembled... but you would have no way to sign the zip with HTC's private key. Or you could even attempt to byte-patch the zip file - but then that would break the crypto signature. Either way, the crypto signature on the zip file is no longer valid.
If you have HTC's private RSA key, let us know!
bftb0
bftb0 said:
coupla questions -
For northmendo:
Is the reboot in the middle of this even necessary? ( flash_image won't work right if /system is still mounted rw ?)
Click to expand...
Click to collapse
I added the reboot because. All I would get is out of memory errors. The reboot fixed that.
e.g.
mtd: read error at 0x001e0000 (Out of memory)
mtd: read error at 0x00200000 (Out of memory)
mtd: read error at 0x00220000 (Out of memory)
mtd: read error at 0x00240000 (Out of memory)
northmendo -
That first link (that you corrected) now points to the recovery image, not "flash_image".
Note that the "flash_image" executable which Amon_RA originally included with his first recovery (.zip) is identical to the /system/bin/flash_image binary which ships on the Eris with 1.5 (1.17.605.1); the md5sum signature (of both of those files) is:
16559f2c27d08ff1ddfcaca05fbf10fb flash_image
That's also the same md5 signature as the "flash_image" file which was posted to dl.dropbox.
I don't have 2.1_root installed on my phone, but if the same binary is already on the phone after installing the 2.1_root ROM, there's no need to include those steps in your instructions. It is also possible that even if the "2.1_root" version of /system/bin/flash_image is different, it would also work.
Note that the only reason I bring it up is that your instructions might be (a) unnecessary, and (b) are encouraging folks to overwrite a binary that is already on the phone. No harm (but unneeded) if it is the same, and unknown harm if it is different.
Also (while I'm at it)
901167f6b5541b488c8e0404bceb0631 recovery-RA-eris-v1.6.2.img ***
It appears to me ( reading between the lines here ) that Amon_RA is trying to improve his v1.6.2 recovery - folks might want to keep an eye on that thread.
An alternative and quicker method than all of this is what zifnab06 suggested here. It's only two lines long, after all.
bftb0
[Edit]***Wow, my post was obsolete the moment I posted it - don't know how I missed Amon_RA's announcement post. Note that there appears to be several versions of "v1.6.2" floating around now - make sure to check his post if you want the most recent.
bftb0 said:
It appears to me ( reading between the lines here ) that Amon_RA is trying to improve his v1.6.2 recovery - folks might want to keep an eye on that thread.
An alternative and quicker method than all of this is what zifnab06 suggested here. It's only two lines long, after all.
bftb0
Click to expand...
Click to collapse
I will keep the link updated to the newest version here. Also I tried the quicker method without success. I will try it again when I get home from work.
Thanks
bftb0 said:
(I suppose I shouldn't respond, 'cuz DocTauri is jacking northmendo's thread. Sorry north!)
Click to expand...
Click to collapse
Sorry, didn't mean to. Understood on the explaination. I didn't realize it was a different rom image, I thought the key had been broken, allowing someone to resign a modified image.
Thanks!
Doc
I used this method and it was all really easy until I got to the end. It just says usage and then sits their and does nothing. I unplugged it and went into recovery and see the android dude and a yellow traiangle and exclamation point. Did I forget something? Is their an alternative way to flashing this?
sdk issues for flashing recovery...
Hey guys,
Im a noob but here's whats going on, Ive downloaded sdk extracted it to my c drive, ive downloaded all the required packages reccomended in the forum, Ive up dated my driver and still my machine doesnt recognize my phone...
Ive also extracted the recovery image to my tools directory and added the the path in enviromentals...
So at this point Im stuck as to how to get my pc (xp) phone and sdk in sync in order to get this recovery image working...So any advice would be highly appreciated. Thanks in advance.
Chris
Spencer_Moore said:
I used this method and it was all really easy until I got to the end. It just says usage and then sits their and does nothing. I unplugged it and went into recovery and see the android dude and a yellow traiangle and exclamation point. Did I forget something? Is their an alternative way to flashing this?
Click to expand...
Click to collapse
You could try this.
If you have your phone pluged in and type in to the terminal
adb reboot recovery [hit enter]
After you phone reboots it should come up with text options to do back-ups and restores. Do you get any of that?
Anyone know the key combo to get into recovery without adb?
having issues getting adb
got the command prompts working in xp, however while trying the methods here in the forum i am getting adb not foud errors. Any suggestions?
EDIT [02/14/2010]: Please see mjgdroids FINISHED PORT HERE.Make sure to thank him and/or donate to mjgdroid.
EDIT: MAKE SURE YOUR ROM SUPPORTS PARTITIONS ON YOUR SD! YOU CAN USUALLY FIND THIS INFO IN YOUR ROMS FAQ.
I'm currently looking for a work-around. Mounting EXT3 still works in the rooted terminal, but that doesn't help Android see your FAT partition.
Here it is folks, working instructions to get Debian Lenny running on your Droid Eris! I say that it's 90% complete because I do not yet have fully functioning MeeGo, I hope to resolve the issue sometime this weekend. Otherwise, all is well. I'm releasing the instructions so that others in the community can contribute.
Thanks to ban_dover for a lot of initial work. For author credit, other contributions, and the original thread leading up to my fix, see http://forum.xda-developers.com/showthread.php?t=748094. If there is ANYONE else who needs to be credited here, PLEASE pm me and I'll edit this post.
Also, if you're wondering "Why Debian Lenny?" it was readily available and already set up for ARMv5 and up. There are also available MeeGo binaries for Lenny. WOOHOO! Everybody's life is easier.
EDIT: I've released what I consider to be an unstable/incomplete RAW image. I will not link to unstable images in this post, you can download it on page 2 of thread. This image can be used to skip both step 1 and converting the image from QCOW to RAW.
1. Create ARM image containing Debian Lenny
In Linux command line
- Download Debian ARM Installer
wget http://ftp.de.debian.org/debian/dis...el/current/images/versatile/netboot/initrd.gz
wget http://ftp.de.debian.org/debian/dis.../versatile/netboot/vmlinuz-2.6.26-2-versatile
- Create disk image
qemu-img create -f qcow deb-arm.img 4G
- Run QEMU VM to run Debian ARM Installer
qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.26-2-versatile -hda deb-arm.img -initrd initrd.gz -append "root=/dev/ram" -m 256
- In Debian installer, follow prompts
I chose the following user access, root-pass:debian91, user:debian and pass:debian91
Install desired defaults. I initially went with desktop environment; core environment may be best for MeeGo
- Reboot VM ONCE to permit it to statisfy any changed dependencies
2. Create filesystem on phone and copy Lenny
In Linux SUPER-USER command line
- Backup SDCARD if necessary
- Enter superuser mode
"sudo sh" or "sudo bash"
- Partition SDCARD
Use partition editor of choice (I used GParted)
FAT must be first partition
Create second partition as ext3
- Mount EXT3 partition
mkdir sd
mount -t ext3 /dev/sdb2 sd
- Convert QCOW image to RAW image
qemu-img convert deb-arm.img -O raw deb-arm.raw
- Mount RAW image as loop
mkdir image
mount -t ext3 deb-arm.raw image -o loop,offset=32256
- Copy image contents to EXT3 partition on SDCARD
cp -r image/* sd
- Unmount both SDCARD and RAW image
- umount deb-arm.raw && umount /dev/sdb2
3. Bind necessary nodes and create chroot jail
In eiter ADB shell or in rooted phone command line (either method MUST BE SUPERUSER!!!)
- Enter superuser mode
"su" (make sure to accept and remember if asked on rooted phone; also not sure how to superuser in ADB shell)
(NOTE: The folowing commands should use "busybox" as a prefix if using ADB shell in terminal)
- Mount EXT3 partition (should be /dev/block/mmcblk0p2)
mkdir /data/local/debian
mount -t ext3 /dev/block/mmcblk0p2 /data/local/debian
- Bind the necessary nodes
mount --bind /dev/pts /data/local/debian/dev/pts
mount --bind /proc /data/local/debian/proc
mount --bind /sys /data/local/debian/sys
sysctl -w net.ipv4.ip_forward=1
- Enter into Debian system
chroot /data/local/debian /bin/bash
4. Installing MeeGo and opening an Xsession through VNC
- COMING SOON!! (like, over the weekend)
EDIT: MINOR SETBACK DUE TO FROYO NOT SUPPORTING PARTITIONED SDCARDS. WORKING WITH DEVS TO RESOLVE.
Connecting chroot to VNC
Running MeeGo environment
- Why Not Now
Finding the best way to get an xserver on Android... possibly without VNC
Seeing which is better, install MeeGo before copying to SDCARD, or after
- Possible future: adapting Lenny to favorite distro flavor
- This would take a lot more of my time, and those who want to convert it to ubuntu can google it more easily
Information Sources
This is a list of articles that I've gleaned my info from.
Debian Lenny ARM on Qemu
http://www.debian.org/releases/stable/installmanual
http://www.finalcog.com/howto-install-debian-lenny-arm-qemu-ubuntu-jaunty
http://kevin.deldycke.com/2007/04/how-to-grow-any-qemu-system-image/
Chrooting Troubleshooting
http://forum.xda-developers.com/showthread.php?t=748094
http://forums.dlink.com/index.php?topic=6073.0;wap2 (helpful in determining why nexus one and incredible images wouldn't chroot)
https://help.ubuntu.com/community/BasicChroot
http://forums.gentoo.org/viewtopic-t-470306-start-0.html
Inspiration
http://bayleshanks.com/wiki.pl?tips-computer-android-g1_debian_cyanogenMod
Most of the G1 development on XDA
http://androidforums.com/incredible-all-things-root/120622-how-run-ubuntu-droid-incredible.html
Very cool, good job.
very nice indeed!
Thanks guys.
I've always wanted to ask but thought it might offend someone. In any case, what will this enable us to do that we couldn't do already?
Sent from my FroyoEris using XDA App
xnatex21 said:
I've always wanted to ask but thought it might offend someone. In any case, what will this enable us to do that we couldn't do already?
Sent from my FroyoEris using XDA App
Click to expand...
Click to collapse
My thoughts exactly, I have no idea what's being said here.
Sweet! Nice work.
korben dallas said:
My thoughts exactly, I have no idea what's being said here.
Click to expand...
Click to collapse
Hmm... I sometimes fall on the answer that its obvious. Let me give a few reasons why I did it. Other than "it is fun for me."
1. Because we can, lol
2. It opens potentially the full gamut of available Linux software that wouldn't otherwise run (unless ported)
3. Broadened capability means wider choice
4. Unknown territory (at least for Eris users) provides new frontiers
I like these answers, three out of four also sum up why open source exists.
Very nice man. Got any screens?
Nikolai2.1 said:
Very nice man. Got any screens?
Click to expand...
Click to collapse
Right now, my camera is my eris. I'll get somebody to take either video or some pics this weekend so y'all can see it in action.
Could anybody create an image and upload it I just spent the last 4 hours waiting for debian to install inside qemu only for it to hang right before the end lol. Needless to say I just want to experiment with it but I don't really want to do that again or risk it hanging again.
Running X from Chroot
OK, so I was sitting around on break and it hit me that Debian Lenny has the Gnome Mobile desktop designed for touch interfaces in its repositories. The project is called Hildon and was the basis for Maemo before it became MeeGo. Voila, debian gui solved.
Then I remembered an article I'd read while in college on running X from within a chroot jail. I love google; I took a look around for it and found it: http://norman.walsh.name/2003/08/22/chroot. Bingo! We may not need VNC to get graphical output.
In short, my free time is going to consist of installing Hildon in Lenny and writing a script to bind the proper directories, descend into chroot and run X.
It's interesting to note a few things. I read on a few boards that android doesn't have it's own Xserver. Historically, chroot was used for testing purposes to ensure that a system could run on the existing kernel/hardware/etc. Well, in Debian Lenny we have an xserver and its dependencies compiled to run on ARMv5 and up. So technically if we can get X to run from chroot with the proper bindings, then we can get that SAME xserver to run directly on Android. Further, the ability to run Debian in chroot directly implies that the same software will run outside of chroot.
And one speculation: it would be an interesting experiment to see if these tools could be run side-by-side with the default Android rom. To any devs familiar with Android roms, does that sound overly ambitious?
AcidRoot said:
Could anybody create an image and upload it I just spent the last 4 hours waiting for debian to install inside qemu only for it to hang right before the end lol. Needless to say I just want to experiment with it but I don't really want to do that again or risk it hanging again.
Click to expand...
Click to collapse
Hey AcidRoot! I give no guarantees as I mentioned I'm still working out kinks, but I can upload my image. I'll compress it, upload it, and edit this post with a link to it.
My current image of Debian Lenny ARMv5 is available here. I'm not posting the link in the first post because this image does not constitute what I'd call stable and complete, just so you're forewarned.
composerdude said:
Hey AcidRoot! I give no guarantees as I mentioned I'm still working out kinks, but I can upload my image. I'll compress it, upload it, and edit this post with a link to it.
My current image of Debian Lenny ARMv5 is available here. I'm not posting the link in the first post because this image does not constitute what I'd call stable and complete, just so you're forewarned.
Click to expand...
Click to collapse
Thanks alot I know the risks I just want to experiment with it.
One of the kinks that would be immediately noticed is that paths to executable directories are not set. When chroot into /data/local/debian, make sure that one of the first things you do is change the path variable.
Code:
PATH=/usr:/bin/:usr/local/bin:.
oman def going to try this later on tonight... sounds GREAT
What is this exactly?
Awesome work man! I've been following this in ban_dovers thread. I just needed to comment here so it'll show up in my "participated" folder on my xda app.
I'll be lurking and waiting for something more stable and noob friendly. Keep up the great work.
Sent from my nonsensikal froyo using XDA App
@joshw0000: Thanks for the encouragement!
@EVERYBODY: I just discovered today after updating Tazz Froyo to the latest version that updates to CM6 have aparently broken support for partitioned SD cards. I am looking for a work-around before working out more kinks. My istructions still work, it's just that ANDROID sees a blank SD, even though partitions can still be mounted to run Debian. Anyone testing, check your FAQs to make sure partitions are supported. I'll keep you posted on my end.
The root filesytem, /, is read-only. This makes /sbin and a bunch of other stuff read-only as well.
I'm fairly noobish w.r.t. Android (but rapidly less so!), but long in the tooth with unix and linux.
All I want to do is put a .bashrc in /, so don't worry and/or feel the need to post a bunch of warnings, caution, etc.
For the life of me, examing the output of mount, I can't figure out what device path to use in the command,
mount -o rw -o remount <device> /
I'm guessing it probably isn't this simple, and there is some convoluted loop config with mount or something as part of the Android security mechanism.
You can mount it as r/w with Root Explorer...
SubnetMask said:
You can mount it as r/w with Root Explorer...
Click to expand...
Click to collapse
ES File explorer will also allow you mount as writable. Under Menu>Settings>Root options.
It's a little flaky though, I have to turn on the root options then shut down the app and restart it to get it to work. It's free and available in the Android Market.
dwallersv said:
The root filesytem, /, is read-only. This makes /sbin and a bunch of other stuff read-only as well.
Click to expand...
Click to collapse
You can remount / as read-write with:
Code:
mount -wo remount rootfs /
and read-only again with:
Code:
mount -ro remount rootfs /
However, the root filesystem is actually a ram disk (initramfs), so any changes to it aren't persistent across reboots. You can modify the initramfs, but it requires rebuilding it and packaging it with a kernel, and flashing the kernel containing the new initramfs.
dwallersv said:
All I want to do is put a .bashrc in /, so don't worry and/or feel the need to post a bunch of warnings, caution, etc.
Click to expand...
Click to collapse
Can you get away with placing it in /data or even /system? If you can't recompile bash, you'll have to invoke it with "bash --init-file /data/local/.bashrc" or something.
If you're using ConnectBot Local, you can do that automatically with "Post-login automation", e.g., "exec bash --init-file /whatever/.bashrc".
I believe the one-click version 2.5.5 installs the scripts that let you simply "remount rw" and "remount ro" from the command line as root.
DiGi760 said:
I believe the one-click version 2.5.5 installs the scripts that let you simply "remount rw" and "remount ro" from the command line as root.
Click to expand...
Click to collapse
That's for "/system", OP is asking about "/".
You cannot keep anything in / anyway. / is the initramfs. Folders, permissions, etc are set on init, and rewritten every boot. So anything you end up putting in / will be removed on reboot.
The only way you can accomplish what you want, in this circumstance, is the method listed above, or to modify the initramfs.
Thanks everyone, for all the great information... Man, I love this place!
@mkasick: Crap!! Well, that torpedoes this one.
I've already used the various "workarounds" you cited (use connect automation with ConnectBot, for example). My reason for this was to attack connecting via telnet via PuTTY from my PC after starting telnetd on the device. It's simply a matter of convenience -- saving the step of typing "bash -l" after I connect.
I'm not going to go to all the trouble to rebuild a custom initramfs for just this.
However, you've given me an idea I'll try and report back (and should work): Modify/add an init.d user script to remount / as writable, copy the .bashrc from sdcard to /, then remount / as read-only. That should take care of persistence across boots.
Once again, mkasick, you are a most helpful fellow around here. I must say -- and it may make you blush -- I am a big fan and admirer of yours, with the things you've found and fixed for the community. You are unique among the devs in my view, given the nature of what you have looked into and fixed. I'm a pretty experienced, knowlegable software guy myself, and fancy learning enough about Android to make contributions in the not-too-distant future like you have.
As I mentioned in another thread, I'm looking at a major driver re-design for the keyboard based on your analysis and patch for the dropped keypress problem... I plan to have some discussions with you (if your interested) sometime in the next few weeks about what I'm planning, just to get your feedback, if nothing else. Basically, the idea is to add some full state-handling to the driver and interrupt handler to substitute for the lack of hardware latch support.
Keep up the good work, friend. You are a uniquely valuable member of this community, in my judgement
-- And that's not to shortchange any of the other devs here, it's just that the nature of your work resonates with me especially, given my own background, career, interests, and past work in software.
Dameon87 said:
You cannot keep anything in / anyway. / is the initramfs. Folders, permissions, etc are set on init, and rewritten every boot. So anything you end up putting in / will be removed on reboot
Click to expand...
Click to collapse
Spot-on, and very good point. However, there are ways around that:
dwallersv said:
However, you've given me an idea I'll try and report back (and should work): Modify/add an init.d user script to remount / as writable, copy the .bashrc from sdcard to /, then remount / as read-only. That should take care of persistence across boots.
Click to expand...
Click to collapse
In fact, in a more generalized sense, this approach can be used to make any changes to the rootfs that "persists" across boots, without the pain of rebuilding initramfs and repackaging the kernel. This is especially messy to track and manage when you take advantage of one of the excellent custom ROMs here (in my case, Bonsai).
FWIW, and maybe helpful to others, I already have organically evolved as "reinstall" framework/process for doing some customizations to the system after installing a new/updated ROM. I use shell scripting for a lot of little things, and keeping this stuff working became a challenge across ROM releases, because necessary components -- like shells, busybox versions, whether busybox of toolbox is being called by the default path, and a bunch of other things (like the ALSA tools) are present in places like the /system filesystem.
All this gets mucked up with each ROM/kernel update. Now, I'm slicing this bologna even thinner by messing with rootfs, so I've got to get things to persist across boots!
I have a simple, one-step process for fixing all this after a new ROM. Nothing fancy -- just a flashable, Edify zip of my stuff that I hit right after a ROM update. Found a template zip with very generic Edify script in it that simply copies the file tree. I keep my custom stuff updated there.
dwallersv said:
My reason for this was to attack connecting via telnet via PuTTY from my PC after starting telnetd on the device. It's simply a matter of convenience -- saving the step of typing "bash -l" after I connect.
Click to expand...
Click to collapse
How about setting BASH_ENV or HOME in telnetd's environment? Or is the environment not preserved?
dwallersv said:
However, you've given me an idea I'll try and report back (and should work): Modify/add an init.d user script to remount / as writable, copy the .bashrc from sdcard to /, then remount / as read-only.
Click to expand...
Click to collapse
That works. "init.d" is the hard part though. To my knowledge, there's no generalized "init.d"-like folder for Android, except statements in init.rc itself (which isn't simply modified).
CyanogenMod does support /system/etc/init.d I believe. Perhaps other ROMs do as well--I've not checked.
There's also using gscript, maybe Tasker, or another program that hooks ACTION_BOOT_COMPLETED. Those won't run at root privileges, but a tie in to "su -c" should work.
dwallersv said:
You are unique among the devs in my view, given the nature of what you have looked into and fixed.
Click to expand...
Click to collapse
Thanks!
I think of my contributions as complementary though. I don't really have the time or patience for "maintaining stuff" that other folks do here very well.
dwallersv said:
Basically, the idea is to add some full state-handling to the driver and interrupt handler to substitute for the lack of hardware latch support.
Click to expand...
Click to collapse
I suppose discussion elsewhere is appropriate. Sounds ambitious, but a good idea. The existing keyboard driver architecture could be improved for certain. To date though, I've tried to make my kernel changes relatively non-invasive, even if not ideal, for maintenance sake.
In a perfect world, a rewritten driver would make it back to Samsung and that would be the "end of it" for us. Personally, I wouldn't want to expend the effort to do so unless I knew it would be merged. But if that something you feel like attempting, there's no harm in trying and seeing what results.
mkasick said:
That works. "init.d" is the hard part though. To my knowledge, there's no generalized "init.d"-like folder for Android, except statements in init.rc itself (which isn't simply modified).
CyanogenMod does support /system/etc/init.d I believe. Perhaps other ROMs do as well--I've not checked.
Click to expand...
Click to collapse
I'm not 100% certain at this point, but from what I've found investigating this, it looks like the "user scripts" /etc/init.d/<scripts> mechanism is a standard part of the Android system. I'll see if I can find where I saw that and post a link.
So I was randomly flying around on Google today, and I noticed that someone had claimed to root the Kobo Arc, and gave written instructions here -- http : // www . mobileread . com / forums / showthread.php?p=2584491 (Remove the spaces, XDA won't let me post an actual link, since I don't have 10 posts yet). After running through this myself, I went on the Google Play store and used root checker. Much to my surprise, it worked, and my device now has root access. I even tested with Root Explorer, and mounted the system partition as R/W, and I can move things in and out of it. I'm currently working on trying to get a custom ROM working, but I'm worried that I will cause a brick, since Cyanogen doesn't support the Arc. (yet...)
ThunderBird2678 said:
So I was randomly flying around on Google today, and I noticed that someone had claimed to root the Kobo Arc, and gave written instructions here -- http : // www . mobileread . com / forums / showthread.php?p=2584491 (Remove the spaces, XDA won't let me post an actual link, since I don't have 10 posts yet). After running through this myself, I went on the Google Play store and used root checker. Much to my surprise, it worked, and my device now has root access. I even tested with Root Explorer, and mounted the system partition as R/W, and I can move things in and out of it. I'm currently working on trying to get a custom ROM working, but I'm worried that I will cause a brick, since Cyanogen doesn't support the Arc. (yet...)
Click to expand...
Click to collapse
confirmed, was just going to post this but was beaten to it.
http://www.mobileread.com/forums/showthread.php?t=218928
ive attached the file but please go to that website and pay homage to whoever did this work...now to the next stop, a ROM
Device now has a working custom recovery see post 15
Sent from my Arc using xda app-developers app
dazza9075 said:
confirmed, was just going to post this but was beaten to it.
http://www.mobileread.com/forums/showthread.php?t=218928
In terms of a ROM do we not need a compatible boot loader that will allow unsigned ROMs?
ive attached the file but please go to that website and pay homage to whoever did this work...now to find a man about a ROM
Sent from my Arc using xda app-developers app
Click to expand...
Click to collapse
i have absolutely no idea what im doing but I think I have dumped 12 partitions using
dd if=/dev/block/mmcblk0p10 of=/sdcard/p10.img
is there anyone around that fancies a challenge? im in a position where bricking this thing isn't really much of a problem so if someones up for a challenge and wants to help im willing to lend myself and the device to this
Warning : Block of Text Ahead.
dazza9075 said:
confirmed, was just going to post this but was beaten to it.
In terms of a ROM do we not need a compatible boot loader that will allow unsigned ROMs?
ive attached the file but please go to that website and pay homage to whoever did this work...now to find a man about a ROM
Sent from my Arc using xda app-developers app
Click to expand...
Click to collapse
Haha. As soon as I found a thread called "root the Kobo Arc" on Google, I posted it here right away. Sorry if I deprived you of the satisfaction! *troll*
Joking aside, I'm not too sure about the bootloader. I think it's pretty locked down (since I put a nexus 7's cyanogenmod onto the data partition and rebooted. It tried to updated, but said validation failed, or something of that sort). I can't install any custom recoveries either, since I have no idea how to do it in the first place, and there's none made for the Arc.
Also, I analyzed the Arc with the "Droid Examiner" App from the play store (That is a really great app, just so you know), and found that it uses a board called "zeus". The funny thing, though, is that one of Sony's Xperia phones, also has a board called "Zeus", and there's Cyanogenmod for that (albiet not the latest version). However, these two devices have nothing in common. The closest thing to an Arc that has Cyanogenmod is the Nook HD/HD+, which uses the exact same chip (OMAP TI 4470).
If someone is smart enough (not me) to analyze the Cyanogenmod files for the Nook, and see how they work, that may lead into flashing the Arc.
Anyway, I'm resetting the Arc, since I'm having weird cases where the Arc would freeze after booting it from sleep mode, and I'd have to turn it off and on again. I think that was something else I did, since it happened before the root, but neh, I might as well try this all from factory default settings.
Sorry for the block of text, guys!
P.S. Using the stock Jelly Bean boot animation on the Arc looks amazing!:laugh:
Haha, its cool, like yourself I just happened to Google kobo arc root and for once my googe fu was up to the task and the root appeared
I've been looking at starting my own recovery mod branch but its no simple task by the looks of it, if their are similar devices we can use all their data and tweak it to ours which would help a lot!
Oh I think we have fast boot, I held vol down and pushed power on, it just sat at the kobo arc screen, I used the nexus 7 driver from the universal adb/fastboot driver I found on here and it connected up http://forum.xda-developers.com/showthread.php?t=2263822
I stumbled on some to good to be true program on Xda dev that apparently can root anything and unlock any bootloader once your in fastboot mode. I have tried that part and it said it was successful but i have no idea how to test this out yet, the program does a bunch of other stuff too, the adb stuff worked as did apk sending, and the rooting options knew i was rooted, it also has flashing functions, I'll be damed if I can find it now I'm at home though , I'll have another look.
I don't mind doing leg work but if someone can read the map it would be very helpful!
Edit, found it
http://forum.xda-developers.com/showthread.php?t=2399385
http://www.mediafire.com/?vwxpq62pa927s9c
Sent from my Arc using xda app-developers app
dazza9075 said:
Haha, its cool, like yourself I just happened to Google kobo arc root and for once my googe fu was up to the task and the root appeared
I've been looking at starting my own recovery mod branch but its no simple task by the looks of it, if their are similar devices we can use all their data and tweak it to ours which would help a lot!
Oh I think we have fast boot, I held vol down and pushed power on, it just sat at the kobo arc screen, I used the nexus 7 driver from the universal adb/fastboot driver I found on here and it connected up http://forum.xda-developers.com/showthread.php?t=2263822
I stumbled on some to good to be true program on Xda dev that apparently can root anything and unlock any bootloader once your in fastboot mode. I have tried that part and it said it was successful but i have no idea how to test this out yet, the program does a bunch of other stuff too, the adb stuff worked as did apk sending, and the rooting options knew i was rooted, it also has flashing functions, I'll be damed if I can find it now I'm at home though , I'll have another look.
I don't mind doing leg work but if someone can read the map it would be very helpful!
Edit, found it
http://forum.xda-developers.com/showthread.php?t=2399385
http://www.mediafire.com/?vwxpq62pa927s9c
Sent from my Arc using xda app-developers app
Click to expand...
Click to collapse
Um... Okay. I've installed the drivers (I think I installed them correctly), and I booted my device using "volume down + power". I have it connected to my System, but whenever I try to use one of the options in the Android Root Toolkit, it tells me it's waiting for the device. I don't know what I did wrong, but something's clearly not working.
As far as the recovery goes, I think that looking at the Nook Tablet from TWRP would work quite nicely. It runs on a similar processor ( I believe it's a OMAP TI 4430 ), and it seems to be quite similar in specs to the Arc. If only I was a bit better at programming...
ThunderBird2678 said:
Um... Okay. I've installed the drivers (I think I installed them correctly), and I booted my device using "volume down + power". I have it connected to my System, but whenever I try to use one of the options in the Android Root Toolkit, it tells me it's waiting for the device. I don't know what I did wrong, but something's clearly not working.
As far as the recovery goes, I think that looking at the Nook Tablet from TWRP would work quite nicely. It runs on a similar processor ( I believe it's a OMAP TI 4430 ), and it seems to be quite similar in specs to the Arc. If only I was a bit better at programming...
Click to expand...
Click to collapse
im usig the generic android adb driver and the bootloader driver for fast boot
im dumped all partitions and mapped them all out, see below for file system details
But again I'm blindly stabbing in the dark and most tutorials are a bit lacking in depth or not relevant to the kobo :/
Sent from my Arc using xda app-developers app
127|[email protected]:/ # blkid
/dev/block/dm-2: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/dm-1: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/dm-0: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/mmcblk0p12: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/mmcblk0p11: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/mmcblk0p10: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/mmcblk0p4: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
[email protected]:/ #
Okay, so I can't even push apps to the Arc using ADB. I think you have to boot into recovery (power + volume up). I don't know how to use the terminal at all (I'm lost, I know D: ), so I don't have that installed on the Arc. I remember being able to do ADB even with my Sony Reader (First gen, PRST1), so I'm not sure why the Arc isn't quite working. I have both drivers installed, BTW.
As for the recovery, I can't even find a method to flash it. I'm still trying everything I can, though. :\
Sent from my Arc using xda app-developers app
ive mapped out the following partitions and any info ive found about each of them, im not in a position to help at the moment, got a big day at work tomorrow, as mentioned above ive used several tools,
SuperSU,
ROM toolbox pro
busybox
remount
Below is a list of all the available partition names and numbers
/dev/block/mmcblk0p1 xloader
/dev/block/platform/omap/omap_hsmmc.1/by-name/xloader
348KB
/dev/block/mmcblk0p2 bootloader
/dev/block/platform/omap/omap_hsmmc.1/by-name/bootloader
1.50MB
/dev/block/mmcblk0p3 cypto
/dev/block/platform/omap/omap_hsmmc.1/by-name/crypto
Completely empty
64KB partition size
/dev/block/mmcblk0p4 EFS
Mounted as /FACTORY
/dev/block/mmcblk0p4:UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/platform/omap/omap_hsmmc.1/by-name/efs /factory ext4 ro,relatime,barrier=1,data=ordered 0 0
20MB
/dev/block/mmcblk0p5 misc
/dev/block/platform/omap/omap_hsmmc.1/by-name/misc
Completely empty
128KB partition size
/dev/block/mmcblk0p6 Bootlogo
/dev/block/platform/omap/omap_hsmmc.1/by-name/bootlogo
Contains kobo arc picture
4MB partition size
/dev/block/mmcblk0p7 Logos
/dev/block/platform/omap/omap_hsmmc.1/by-name/logos
contains the battery charge logo
28MB partition size
/dev/block/mmcblk0p8 recovery
/dev/block/platform/omap/omap_hsmmc.1/by-name/recovery
data contains a GZ file, when decompressed we get a 8.5MB file of unknown type, exact same as in boot
5MB of data
16MB partition size
/dev/block/mmcblk0p9 boot
/dev/block/platform/omap/omap_hsmmc.1/by-name/boot
data contains a GZ file, when decompressed we get a 8.5MB file of unknown type, exact same as n recovery
4.5MB of data
8MB partition size
/dev/block/mmcblk0p10 CACHE
Mounted as /CACHE
/dev/block/mmcblk0p10: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/platform/omap/omap_hsmmc.1/by-name/cache /cache ext4
rw,nosuid,nodev,noatime,errors=panic,barrier=1,nom blk_io_submit,data=ordered 0
0
768MB partition size
/dev/block/mmcblk0p11 SYSTEM
Mounted as /SYSTEM
/dev/block/mmcblk0p11: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/platform/omap/omap_hsmmc.1/by-name/system /system ext4
rw,relatime,barrier=1,data=ordered 0 0
910MB partition size
/dev/block/mmcblk0p12 USERDATA
Mounted as /DATA
/dev/block/mmcblk0p12: UUID="57f8f4bc-abf4-655f-bf67-946fc0f9f25b" TYPE="ext4"
/dev/block/platform/omap/omap_hsmmc.1/by-name/userdata /data ext4
rw,nosuid,nodev,noatime,errors=panic,barrier=1,nom blk_io_submit,data=ordered 0
0
12GB partition size
Watching with interest. The root works. No frills CPU installed and working. There may be hope for this thing yet:good:
Moved to new thread and more appropriate forum - keep up the good work guys
im not sure that's going to work you know, ive had some permission errors with adb which suggests the root isn't full, terminal on the device works fine, but adb just has some problems, adb shell and the su seems to fix them.
http://www.gadgetsdna.com/android-terminal-adb-shell-command-list/1168/
http://www.addictivetips.com/android/make-nandroid-backups-on-android-without-booting-into-recovery/
im busy today but ive found these useful
i think Clockwork Recovery should be our focus at this point or if you have dumped your partitions(?) attempt to construct a rom for later use
or this should work too
Install any Custom Recovery with flash_image:
Just like the previous method, this method also requires following advanced steps and is not recommended if the first method is working for you. flash_image is a tool for Android devices that lets you rewrite your phone’s system partitions with partition image files and installing it to your device requires ADB. If you don’t already have ADB installed, check out our guide on installing ADB. Once you have ADB installed, flash the custom recovery image as follows:
WARNING: It is very important that the recovery image that you use in this method is compatible with your device. Else it will not work and flashing it could possibly brick your device.
Download flash_image and extract it from the zip file to a location on your computer. We extracted it to the main C drive (not in any folder) and will use that in the next steps.
Copy the recovery image for your phone to a convenient location on your computer, preferably with a short path. We will be placing it on the C Drive directly (not in any folder) and using that in the next steps.
Note: The recovery image should have .img extension. If it is in a zip file, extract the .img file from it.
Enable USB debugging mode on your device from Menu > Settings > Applications > Development.
Connect your device to your computer via USB.
Open a Command Prompt window on your computer and enter the following commands: adb push c:\flash_image /sdcard/adb push c:\recovery.img /sdcard/adb shellsumount -o remount, rw /systemcp /sdcard/flash_image /system/bincd /system/binchmod 777 flash_imageflash_image recovery /sdcard/recovery.imgThis will first transfer flash_image and recovery.img to your phone. Then it will copy flash_image to the /system/bin folder of your Android device and make it executable. Finally, it will flash the custom recovery image to your device using flash_image.
Note that we used c:\flash_image and c:\recovery.img in the first two lines as we had these files extracted at the root of our C drive. If you extracted the files elsewhere, use the appropriate paths and if your recovery image has a different name, use the appropriate name.
Reboot your device once the process is finished and you’re done. You may exit adb and the Command Prompt window on your computer by entering ‘exit’ thrice.
dazza9075 said:
im not sure that's going to work you know, ive had some permission errors with adb which suggests the root isn't full, terminal on the device works fine, but adb just has some problems, adb shell and the su seems to fix them.
http://www.gadgetsdna.com/android-terminal-adb-shell-command-list/1168/
http://www.addictivetips.com/android/make-nandroid-backups-on-android-without-booting-into-recovery/
im busy today but ive found these useful
i think Clockwork Recovery should be our focus at this point or if you have dumped your partitions(?) attempt to construct a rom for later use
or this should work too
Install any Custom Recovery with flash_image:
Just like the previous method, this method also requires following advanced steps and is not recommended if the first method is working for you. flash_image is a tool for Android devices that lets you rewrite your phone’s system partitions with partition image files and installing it to your device requires ADB. If you don’t already have ADB installed, check out our guide on installing ADB. Once you have ADB installed, flash the custom recovery image as follows:
WARNING: It is very important that the recovery image that you use in this method is compatible with your device. Else it will not work and flashing it could possibly brick your device.
Download flash_image and extract it from the zip file to a location on your computer. We extracted it to the main C drive (not in any folder) and will use that in the next steps.
Copy the recovery image for your phone to a convenient location on your computer, preferably with a short path. We will be placing it on the C Drive directly (not in any folder) and using that in the next steps.
Note: The recovery image should have .img extension. If it is in a zip file, extract the .img file from it.
Enable USB debugging mode on your device from Menu > Settings > Applications > Development.
Connect your device to your computer via USB.
Open a Command Prompt window on your computer and enter the following commands: adb push c:\flash_image /sdcard/adb push c:\recovery.img /sdcard/adb shellsumount -o remount, rw /systemcp /sdcard/flash_image /system/bincd /system/binchmod 777 flash_imageflash_image recovery /sdcard/recovery.imgThis will first transfer flash_image and recovery.img to your phone. Then it will copy flash_image to the /system/bin folder of your Android device and make it executable. Finally, it will flash the custom recovery image to your device using flash_image.
Note that we used c:\flash_image and c:\recovery.img in the first two lines as we had these files extracted at the root of our C drive. If you extracted the files elsewhere, use the appropriate paths and if your recovery image has a different name, use the appropriate name.
Reboot your device once the process is finished and you’re done. You may exit adb and the Command Prompt window on your computer by entering ‘exit’ thrice.
Click to expand...
Click to collapse
I've already tried that recovery method (I spent about two hours just googling), and it doesn't work with the Arc. The ADB won't let me push the image over.
As for Cyanogenmod, I tried something yesterday. A person on the Mobileread forums (apparently a Kobo employee) put out an update.zip file for the Kobo Arc. The file was quite old, and it's really just the 4.1.1 update that (I hope) we're all running. He said that as long as you put it on the root of the data partition, the Arc will flash it immediately. When I tried taking a Nexus 7's Cyanogenmod file and sticking it in the same place, the Arc started flashing it, but then just said there was an error with the update. So I personally think that you do require a properly signed ROM.
However, if you open up Kobo's update.zip using Winrar, a sidebar pops up that says "signed by SignApk". I don't know too much about this, but couldn't we use this "signapk" to sign our own ROMS and flash them?
Just a thought.
ThunderBird2678 said:
As for Cyanogenmod, I tried something yesterday. A person on the Mobileread forums (apparently a Kobo employee) put out an update.zip file for the Kobo Arc. The file was quite old, and it's really just the 4.1.1 update that (I hope) we're all running. He said that as long as you put it on the root of the data partition, the Arc will flash it immediately. When I tried taking a Nexus 7's Cyanogenmod file and sticking it in the same place, the Arc started flashing it, but then just said there was an error with the update. So I personally think that you do require a properly signed ROM.
However, if you open up Kobo's update.zip using Winrar, a sidebar pops up that says "signed by SignApk". I don't know too much about this, but couldn't we use this "signapk" to sign our own ROMS and flash them?
Just a thought.
Click to expand...
Click to collapse
I think there is a problem with the setup, I just flashed a CW recovery image and it worked, or didn't rather! but the concept did, transferred, flashed using adb, I had to replace it though as it was totally borked and kept restarting, apparently the touch based recovery methods can be like that, ill have some good time tomorrow night (UK time) if your about, and ill keep at it tonight if I get a chance!
copy recovery to adb location
adb push recovery.img /sdcard/
adb shell
su
cat /sdcard/recovery.img > /dev/block/platform/omap/omap_hsmmc.1/by-name/recovery
exit adb shell and type
adb reboot recovery
fixed it by holding power button and vol down to boot to fastboot recovery
then ran
fastboot flash recovery inputrecovery.img
inputrecovery being my original recovery file taken from partition 8!
ive updated the partition map on the post above with my progress, but it looks like we can flash to them my name so its probably less relevant now
oh ive ditched the drivers I was using and reinstalled the drivers from the official SDK, generic android adb for within android and android bootloader for fastboot
EDIT
Yaaas!! recovery replaced
ok, deleting or renaming /etc/install-recover.sh appears to have stopped custom recovery being changed back to stock after reboot, I used the recovery builder to make a build from partition 8, which it did without error, flashed using the above commands.
Still don't know what im doing though, but progress is progress
ill post a link to the custom recovery ive made soon, we need to make up some fstab file listing all the mounts etc, i tried one but it must be borked as recovery couldnt see anything
ok i have a working recovery http://jenkins.cyanogenmod.com/job/recovery/35325/artifact/
its not quite done, i need to mount the sdcard, its physical location is mounted, ie /data, but its virtual mount isn't /storage/sdcard
I have asked for some help so hopefully someone can help be on this, I think it needs to be symlinked
im going to need some help soon, so if your reading this with a kobo arc, I need you! im needing a hand folks! if your stuck getting this far let me know and we can PM to get it working
oh and recovery is also now persistant by deleting or renaming /etc/install-recover.sh"
Sorted folks!
I have made a stable and thus far, a working custom recovery.
its mounting everything and backing up / restoring works as it should, unless anyone can find any issues I consider this step in building a complete ROM completed,
you must have root, download arctic.apk and install on your tablet, you will need to enable unknown sources In dev options first
you must have android and java sdk also installed, you will need to add the google usb drivers in the android sdk, you will find them in the "extras"
Enable usb debug on the arc and install the generic google adb usb drivers
Delete or rename /etc/install-recover.sh this will make the custom recovery persistent
Copy the recovery.img to the SDCard, either by using drag and drop in windows ( to root of "internal storage") or by adb push, if you use adb push then remember to copy recovery.img to the same folder as adb
adb push recovery.img /sdcard/
The next job is to open up a command window and navigate to adb folder, type the following exactly, even better copy and paste them!
adb shell
su
cat /sdcard/recovery.img > /dev/block/platform/omap/omap_hsmmc.1/by-name/recovery
exit adb shell (ctrl+C) and type
adb reboot recovery
and bobs your uncle, one happy new recovery
Thanks for your hard work. Everything works quite well.
Sent from my Arc using Tapatalk 4
cancuck said:
Thanks for your hard work. Everything works quite well.
Sent from my Arc using Tapatalk 4
Click to expand...
Click to collapse
that's the easy bit, I have a feeling I need to make a couple of changes to the recovery.img but noting major, just a couple of other mounts I may have missed
I probably would like some help with the next bit however.
im just trying to build a development platform, I have a loathing for Linux as a desktop so will need to re educate myself without throwing my laptop out of the window, after that "challenge" the ROM should be easy
Well, I've just done it, and it works. Everything seems to be in order for the time being. I'm going to muck around with the new capabilities, and see what I can do.
DISCLAIMER: YOU AGREE TO TAKE FULL RESPONSIBILITY FOR YOUR DEVICE IF YOU PROCEED.
The original thread (http://forum.xda-developers.com/moto-g/general/mod-save-data-space-cache-partition-t2942765) was getting to cluttered up with development and testing so I decided to start a new thread with the "finished" product. The original thread will be renamed to Q&A/Development. We might even ask for the old thread to be closed down. (up to @Bert98, the thread's creator.)
Moto G's internal eMMC card has a ~600Mb partition called /cache, which is not used since the apps' cache is stored in /data, so the latter fills up and the first one stays empty.
Owning a 8Gb model, having 600Mb not available for storage really bugged me, because my phone's memory (/data partition) was always full because it's a 5.7Gb space shared between apps and microSD files.
Now, it may not work for you if:
a) you have A LOT of apps installed.
And by "a lot", I mean more than 90-100 apps, but if you have a 8Gb model, you probably don't
b) you're running ART (this is default in lollipop and newer)
Since ART uses a lot more space than dalvik, the space in the /cache partition probably won't be enough. When I was running ART, it used 1Gb more than dalvik.
Original post by @Bert98
Click to expand...
Click to collapse
This was tested on my moto g 16GB which is running RetailUS_4.4.4 kitkat with CWM recovery. The custom ROM procedure was tested on the same phone but with cm11 Nightly installed.
Prerequisites:
1. You must have "adb root" functioning. If you don't head to this thread: http://forum.xda-developers.com/showthread.php?t=1687590 and there is a free download link at the bottom of the post.
Download and install the apk on your phone. Open up adbd insecure (the new app) and grant it superuser rights PERMANENTLY. Check the box that says "enable insecure binary" and make sure to check the box
that says "enable at boot."
2. You must have a recovery that can accept adb shell commands.
3. Root Access Duh?!
4. A windows machine capable of running batch files.
5. A decent text editor, notepad will work but notepad++ is strongly recommended. (Only needed if you are using STOCK ROM procedure)
Please, please make a nandroid backup before you continue!!!!
Stock ROM procedure:
Read the directions very carefully and then read them again, before continuing.
1. Download the cachemover_v1.3.zip from: LINK REMOVED DUE TO SCRIPT ISSUES.
2. Extract the contents.
3. Connect device to PC and navigate to the extracted folder.
4. Double click/Run the cachemover_Stock.bat
5. Follow the onscreen instructions until you get to the part where it says to edit a file.
6. About halfway through the script it will pull a file called "init.qcom.post_boot.sh" to the folder.
7. Open it with a TEXT editor and navigate to about line 487 (Might be different for 8gb model). Look here for a better understanding: https://www.dropbox.com/s/jr5lyl5s5i2jtpg/where to paste code.PNG?dl=0
8. Start a new line and paste this code in the file: (Refer to the image above for help)
Code:
chmod 655 /cache
chmod 655 /cache/dalvik-cache
chmod 655 /cache/dalvik-cache/*
9. Make sure to save the file in the same folder as the cachemover_Stock.bat
10. Press any key to continue on the script and let it do its thing.
11. It will reboot several times and land you on the home screen/lock screen.
12. If the script hangs after a reboot, you need to unlock the device to reestablish a connection with your computer.
13. There might be one or two force closes but once you close the notifications they will not come back.
Custom ROM procedure:
USE THIS FOR ROMS THAT DO NOT REMOUNT OR CHANGE PERMISSIONS OF /CACHE ON BOOT
1. Download the cachemover_v1.3.zip from: https://www.dropbox.com/s/bzj34g4q1s61ojz/cachemover_v1.3.zip?dl=0
2. Extract the contents.
3. Connect device to PC and navigate to the extracted folder.
4. Double click/Run the cachemover.bat
5. Follow the onscreen instructions.
If anything goes wrong:
Go to recovery, wipe cache, then wipe dalvik-cache and reboot. This should get your device back to how it was.
(If you used STOCK ROM procedure)
The script made a backup of the "init.qcom.post_boot.sh" file to /sdcard/init_backup
You can restore the shell script to /system/etc/ via shell commands or by using a root browser. To restore permissions:
Code:
chmod 740 /system/etc/init.qcom.post_boot.sh
chown root:root /system/etc/init.qcom.post_boot.sh
Custom ROM procedure already has a restore script!
I am currently working on an auto restore script for stock and that will be relased soon, hopefully! :good:
Changelog:
v1.0 - First stable release. Does not work on STOCK ROM.
v1.1 - Added a restore script.
v1.3 - Added support for STOCK ROM. There are still a few bugs.
How it works?!?!
Coming soon...
Huge thanks to @Bert98 and @dd043
Hit the thanks button if it worked! I went through about 50 factory resets, and reflashed the ROM about 25 times, and put about 10 hours of work into this script! Really motivates me for future projects. :laugh:
Thanks for your help man and effort.
I encountered a problem, everything works up until my device boots in CWM to fix permissions, then just sits there doing not alot I don't even see the option in my CWM.
Any ideas? cheers
Sent from my XT1032 using XDA Free mobile app
When it reboots to cwm unplug the cable and replug it, if it hangs just type these commands manually from a command window.
chmod 655 /cache
chmod 655 /cache/dalvik-cache
chmod 655 /cache/dalvik-cache/*
reboot
If this does not work you may ned to go into mounts & storage in the cwm menu and click mount /cache. Then try the commands again.
I'm having some issues on stock.
I thought 0655 fixed everything but no, I can't install any app after moving the dalvik-cache to /cache. I tried chmoding 0777 on the new cache folder, on /cache itself, to no avail.
Code:
E/dexopt cannot open '/data/dalvik-cache/[email protected]' for output
Anyone can confirm it's not only my device? And/or can help find a fix?
Also does someone knows how to execute commands on a particular init step? Real init.rc scripts can do:
Code:
on post-fs-data
mount -o bind /cache/dalvik /data/dalvik-cache
It there was a way to achieve the same from post_boot/init.d we could mount -o bind /cache/dalvik /data/dalvik-cache and all permissions issues would disappear as well as the need for symlink.
You have a typo in the threads title. Just a heads up.
Vuciz said:
You have a typo in the threads title. Just a heads up.
Click to expand...
Click to collapse
Thanks for letting me know!
dd043 said:
I'm having some issues on stock.
I thought 0655 fixed everything but no, I can't install any app after moving the dalvik-cache to /cache. I tried chmoding 0777 on the new cache folder, on /cache itself, to no avail.
Code:
E/dexopt cannot open '/data/dalvik-cache/[email protected]' for output
Anyone can confirm it's not only my device? And/or can help find a fix?
Also does someone knows how to execute commands on a particular init step? Real init.rc scripts can do:
Code:
on post-fs-data
mount -o bind /cache/dalvik /data/dalvik-cache
It there was a way to achieve the same from post_boot/init.d we could mount -o bind /cache/dalvik /data/dalvik-cache and all permissions issues would disappear as well as the need for symlink.
Click to expand...
Click to collapse
Let me try and do that right now... Ill get back to you if it does!
My script works on stock btw... But the mount way seems a bit easier and might cause less errors than my way.
Try it please.
skyguy126 said:
Let me try and do that right now... Ill get back to you if it does!
My script works on stock btw... But the mount way seems a bit easier and might cause less errors than my way.
Try it please.
Click to expand...
Click to collapse
Yes I've tried your script, all went well but the result is the same. The script itself works nicely btw
Applications present before moving cache work perfectly, but I can't install anything new. I suspect it might be my device but before wiping everything I'd prefer feedback from others :fingers-crossed:.
I cannot install new apps as well. The mount command you showed me has the same effect too. I honestly don't know anymore, the sym link did not allow the install of new apps nor did the mount command you sent me. Correct me if I am wrong.
Edit: Going through all the init files on my phone to see which one remounts /cache at boot.
Why does the init.rc get overwritten at boot. Is it because the kernel (boot.img) is the one that copies it over? I have found by changing the perms/locations in this file and init.target.rc you can achieve what this mod is trying to acomplish.
I don't see the mount cache command in CWM strange
I've managed to get back to normal, thanks for everyone's help though, I will keep and eye on the thread
Sent from my XT1032 using XDA Free mobile app
non-windows version?
Thanks for this tool. It's a great idea and our Motos really need it.
However, I have a problem - I do not own a windows license (os x and ubuntu user) and I would prefer not to spend $120 just to use it for this script. Pirating is out of the question for me.
I was wondering if there is any chance of having this script written for linux and/or mac. If impossible, is there a LEGAL way of running windows in a virtual machine? Something like a trial or similar?
If you know how just convert it to shell script for osx and Linux. I give you permission to do this but you may not take credit or rehost your creation.
Ok so I have the kernel extracted and we could modify and flash that, but I believe that it's not really necessary. There are a lot of risks to flashing kernels and I am not willing to take it. So is there a way we can modify dalvik so it creates it's cache in /cache instead.
skyguy126 said:
Why does the init.rc get overwritten at boot. Is it because the kernel (boot.img) is the one that copies it over? I have found by changing the perms/locations in this file and init.target.rc you can achieve what this mod is trying to acomplish.
Click to expand...
Click to collapse
Yes the init.rc is in the boot ramdisk. I don't think it would be worth the trouble to rebuild a boot.img. The moto g is fairly unbrickable but it's quite a lot of work to setup an environment to rebuild an image :/.
Too bad for the mount command, I was sure it was working but maybe I had changed something else and don't quite remember the steps to reproduce
We could possibly implement a shell script toggler for when we need to install new apps, but I'm afraid it'd become annoying fairly quickly: I noticed the issue initially because google play services decided to update itself, failed, and broke all google apps. As far as I know this autoupate can't be disabled.
Thanks for trying!
dd043 said:
Yes the init.rc is in the boot ramdisk. I don't think it would be worth the trouble to rebuild a boot.img. The moto g is fairly unbrickable but it's quite a lot of work to setup an environment to rebuild an image :/.
Too bad for the mount command, I was sure it was working but maybe I had changed something else and don't quite remember the steps to reproduce
We could possibly implement a shell script toggler for when we need to install new apps, but I'm afraid it'd become annoying fairly quickly: I noticed the issue initially because google play services decided to update itself, failed, and broke all google apps. As far as I know this autoupate can't be disabled.
Thanks for trying!
Click to expand...
Click to collapse
How about making a simple apk that toggles this feature. Something like when you click the icon it doesn't even open but gives a little notification of success. Something like that. I myself am not experienced with apks but I can put together a shell script for the apk.
skyguy126 said:
Ok so I have the kernel extracted and we could modify and flash that, but I believe that it's not really necessary. There are a lot of risks to flashing kernels and I am not willing to take it. So is there a way we can modify dalvik so it creates it's cache in /cache instead.
Click to expand...
Click to collapse
Patching dalvik itself sounds promising. It can probably be done with in a batch script with a command line hex editor.
The path is defined in frameworks/base/cmds/installd/installd.h
Code:
#define DALVIK_CACHE_PREFIX "/data/dalvik-cache/"
Not sure if there is another mention in the source tree.
But there's nothing to say we wouldn't face the same issue, the error message in the logcat is pretty generic
dd043 said:
Patching dalvik itself sounds promising. It can probably be done with in a batch script with a command line hex editor.
The path is defined in frameworks/base/cmds/installd/installd.h
Code:
#define DALVIK_CACHE_PREFIX "/data/dalvik-cache/"
Not sure if there is another mention in the source tree.
But there's nothing to say we wouldn't face the same issue, the error message in the logcat is pretty generic
Click to expand...
Click to collapse
Ill try it. I don't mind doing a bunch of resets because I am using my moto g as a test bench anyway. My daily driver is the OnePlus One
dd043 said:
Patching dalvik itself sounds promising. It can probably be done with in a batch script with a command line hex editor.
The path is defined in frameworks/base/cmds/installd/installd.h
Code:
#define DALVIK_CACHE_PREFIX "/data/dalvik-cache/"
Not sure if there is another mention in the source tree.
But there's nothing to say we wouldn't face the same issue, the error message in the logcat is pretty generic
Click to expand...
Click to collapse
EDIT: Unfortunately it didn't work. I don't know if I modified the installd file correctly. The program I used is HxD.
Is there a way we can force dalvik to start after the directories are created. And change dalvik to create it in /cache.