Index
Post 1 - Android Boot Process, Space Restrictions in /data, Usual Workaround scripts that load from init.d
Post 2 - The Permanent Solution for Internal space issues in /data, and how it is executed (Step by Step)
Post 3 - Credits, Benefits, Note on Cache, Note to ROM Makers on ClockWorkMod Updater Script, FAQ
Post 568 - Test ROM for Native Mount DataOnEXT with DalvikOnNAND
Post 622 - Test #2 ROM for Native Mount DataOnEXT with DalvikOnNAND
Thanks to quite a lot of inputs, ideas, testing and feedback, I have been able to give a working solution to reliably mount /data to the EXT partition in our HD2’s SD Card before Android initializes. I am redoing the first three posts of this thread to give a complete info that answers the what, why, how questions.
Before I even start, let me make my objectives clear:
Have a system partition that is as big as I want in NAND, so that I can install any bloated ROM I want without chopping down anything, and yet have a /data partition for all my apps and their bloated data
Avoid using internal (NAND) userdata partition completely, so that if the day comes where my /system is full of bad blocks, I will still be able to create a system partition in the ~900+ MB internal NAND my TMoUS HD2 has
With this method, this is how I am using my phone:
Device - TMoUS HD2
Boot Loader - cLK 1.5.0.9
Partitions (in order) and Sizes - Recovery - 10 MB, Boot - 10 MB, System - 500 MB, Userdata - <I didn't bother >, Misc - 1 MB, Cache - 2 MB.
Recovery - CWM Based Touch Recovery B8
SD Card - 16GB Transcend Class 6 with 4 GB EXT4 Partition (mounted as /data, of course!)
My idea for this setup is that a user should not be having to get into the boot loader or changing partition sizes for every ROM. With this setup, I am having a close-to-native-Android device setup and can flash any ROM I want, without worrying if my partitions will accommodate it.
So what exactly does this method do? Before I answer that, a brief on the Android booting process – Note that this is simplified to meet this thread’s requirement, and not necessarily completely accurate. When you power on the phone the following actions happen…
The Android Boot Process
Bootloader – In HD2’s case, Magldr or cLK – loads the kernel based on how you have configured the phone.
Kernel – The kernel (zImage) is loaded into RAM along with an initial ramdisk (initrd.gz), which initializes various devices (IO, memory, GPU, etc.), interrupts, and mounts the root file system (/). After this, the first user-space process called init is started.
Init – this is a binary file that is contained within the initrd.gz. The init binary processes init.rc and init..rc , along with other .rc files that are called by these two .rc files. Some of the key functions (from this thread’s perspective) in the order of their initialization/ execution are:
The init process follows the instructions in the init.rc and init.xyz.rc files and creates empty directories including /data. It then mounts the storage devices (partitions in the internal NAND (MTD)) to these empty directories. The NAND partition for system is mounted to /system, followed by the partitions specified for data, cache, etc. The directories for dalvik-cache (/data/dalvik-cache) are also created by the init process after mounting the specified device to /data.
The init process then starts various services including adb, service manager, Volume Daemon (vold) for media like SD Card (FAT partition). Most importantly, the zygote service which initiates the Dalivk-Cache is loaded in this sequence.
As we all know, Android is based on Linux. The boot sequence described above is common for all Linux machines – until the zygote stage. Core Android file like core, framework, services, IME, policy, etc. are executed from the Dalvik-Cache and hence Initialization of the Dalvik Cache is pretty much where Android comes into the picture
The sysinit/ run-parts part, which runs scripts from the /system/etc/init.d later the Zygote stage. No matter how this is done, Android has already started loading by the time the boot process comes to executing scripts in /system/etc/init.d
Now that you know what happens when Android boots, you may also have realized that mounting a device to /data happens early in the boot process.
Space Restriction in HD2, and the twist with bad blocks
The 'normal' way to store all OS data (dalvik-cache, Configurations & Settings, Accounts, etc.) and User data (Apps, app data, mails and messages, call logs, etc.) is to have a partition named userdata in the HD2’s NAND, and have it mounted to /data during the init process. The drawback in using the userdata partition is that the space you can have for userdata is inversely affected by the size of your system partition, and whether your phone is an EU/ International HD2 or a TMoUS HD2.
Best case is, if you have a ~100 MB system partition for a really scaled-down, space-optimized OS, you will get about 800+ MB for userdata partition on TMoUS and ~400 MB on an International/ EU HD2. This space might be good enough for a lot of us who only have light-to-medium use of our phones. But for quite a lot of us, this is a bottleneck. As if that is not enough, we have these villainous bad-blocks that creep up slowly, determined to swallow up the internal NAND completely, though it would be several years down the line before that happens
The Workaround
The workaround for this method is to have a script in the /system/etc/init.d that mounts the EXT partition in the SD Card to sd-ext, moves a part of /data from the userdata (NAND) to the EXT partition (sd-ext) and creates symlinks (symbolic link) in /data (userdata) to point to the new location in the EXT partition. In this method you will not see an increase in what the phone shows for internal space. The apps you install and then some more will be installed in the EXT partition, which will be symlinked as /data/app and so on.
The other way is to move the mount point (and the contents) for the /data directory from userdata (NAND) to the EXT partition in the SD Card, mount the userdata (NAND) as sd-ext or some other directory, create dalvik-cache (and maybe /data/data - where all user apps' data are stored) in the userdata and symlink that location back to the EXT partition (which is now /data). In this method, you will get the size of your EXT partition as the internal space. Moving parts of /data to NAND will in theory give you better performance, as the most read/ written part of the phone resides in NAND.
The benefit of these methods is that it is very simple and easy to install on any rooted ROM through the recovery. This method balances performance by moving the static part of /data (like the .apk you install) to the EXT partition, keeping the dynamic part (/data/data – where all app data are stored, or /data/dalvik-cache – from where all apks are executed) in NAND.
The drawbacks with this workaround:
This method is initiated AFTER Android boots. No matter how it is executed or what it does, anything that loads from /system/etc/init.d is executed only after at least some parts of Android loading process is initialized. This leads to weird outcomes – low sound issues, unpredictable behavior of the OS or some apps (Notification Widget toggles not working, etc.), and then some more. There is no reasonable way to predict what issues you may get. In fact you cannot be sure if the issue is with the ROM or if the issue is occurring because of the move2sd script you are using. If you are facing an issue that none others are facing and if you have a move2sd script, then you MUST undo what the script does before you can start troubleshooting.
In some cases, an in place upgrade (upgrading from one version of the same ROM to a higher/ newer version, or upgrading from one ROM to another ROM of the same Android version/ build) will corrupt the apps' data as well as configuration, etc.
Moreover, one move2sd script that works fine with one ROM will not work exactly the same way with another ROM or even an updated version of the same ROM.
There is always some amount hit or miss involved in this workaround!!!
The Solution
…is what this thread is all about. Like we saw, /data directory is mounted to a storage device pretty early in the boot process – so early that it is only Linux at the time /data gets mounted and Android is still yet to be loaded. The storage device that is traditionally mounted to /data directory is the internal NAND’s userdata partition.
The simple solution I have for unrestricted and reliable internal space is to directly mount the EXT partition of the SD Card to /data during the Linux init process (instead of first mounting the NAND’s userdata, loading Android, and moving the /data mount point or some contents within /data to the EXT partition while Android is loading).
How is this done?
The Easy way - Thanks to @Kokotas (Note that I have not updated Kokotas' .zip file to include the recent changes (20th October 2012) (See The Long Way below)
Visit the post (quoted below), thank @Kokotas, download the .zip from the post, flash it in recovery and lets us know how it goes. Did I tell you to make sure you have a NANDROID backup?
This .zip can be used to install DataOnEXT mod on the fly - your ROM will be the same when you reboot after flashing this .zip, except that /data will be mounted from the EXT partition with all your apps, settings, etc. intact.
kokotas said:
If you have a normal NAND installation(and an ext2/3/4 partition on your card) and want to give ph03n!x's DataOnEXT method a try,
BUT you think it is difficult THEN you can try the attached recovery package.
It follows all the steps of the described process AND at the end it copies all of your /data to the ext2/3/4 partition. <= This means that after rebooting, you'll have your system set up as before but with DataOnEXT!
And if you want to go back to your previous setup (that is a normal NAND installation without DataOnEXT), just flash the original kernel to your device.
Have in mind that I have only tested it on my phone. If you do try it, please leave a comment. Especially MAGLDR users! Cause it is not tested with MAGLDR.
Thank you ph03n!x for a great concept!
Click to expand...
Click to collapse
The Long Way (or this is how I started off doing this mod )
The following steps show how to modify a ROM’s boot process to mount the EXT partition as /data.
IMPORTANT: THIS PROCESS INVOLVES USING DISXDA’s KITCHEN in CYGWIN. I EXPECT YOU TO BE ABLE TO SETUP CYGWIN AND USE DSIXDA KITCHEN. EVEN WHILE I AM TRYING TO GIVE A STEP-BY-STEP HERE, I WILL NOT ANSWER QUESTIONS ON HOW TO SETUP AND TROUBLESHOOT DSIXDA’s KITCHEN OR CYGWIN.
Assumption:
For the sake of simplicity, I am going to assume that you have a ROM that is installed in your phone, and you want to modify the same ROM for natively mounting EXT to /data.
I am also going to assume that your HD2 has a SD Card in it, and the SD Card has been partitioned in such a way that the first partition is the FAT partition that Windows sees, and the second partition is a EXT2/3/4 partition. You may or may not have a Swap partition, but I strongly recommend NOT enabling Swap.
Prerequisites:
Take a NANDROID backup using ClockWorkMod
Back up all user apps and system app data using Titanium Backup
Install Cygwin
Install @dsixda’s Kitchen
Install Notepad++ (or any other UNIX compatible text editor)
@dsixda’s Kitchen – Setting up a working folder
While these steps will involve the entire ROM, note that you will only using the boot directory or boot.img for this mod.
You need a rom.zip file that has at least these three directories when you open the .zip – META-INF, system, boot (or boot.img)
If your rom.zip file has a different structure, just extract the three directories alone from it and create a new zip. Essentially, when open the rom.zip you should see only these three directories
An Example:
{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Place this zip file in the original_update directory under Kitchen. A sample directory structure of the Kitchen is as follows:
From Command Prompt, run cygwin.bat, browse to the directory where you have installed the kitchen and run it using ./menu
Select option 1 for setting up a Working Folder, follow instructions. Congratulation! You should have a working folder now. After the Working Folder is setup, navigate to the WORKING_091712_123456 directory. Make sure you have a directory named boot, or a boot.img here. To be double sure, you can replace the boot directory or boot.img with the one from the ROM you want to modify and flash.
Steps for mounting EXT to /data
Back in the Kitchen Menu, select 0 for Advanced Options
Select 20 for Tools for boot image
Hit z for Extract kernel+ramdisk from NAND boot folder (or w for Extract kernel+ramdisk from boot.img)
Now navigate to the BOOT-EXTRACTED directory that got created under the directory where you installed the kitchen. You will see something similar to this:
Edit init.rc and init.htcleo.rc to find all mentions of sd-ext and comment them out with # in the begining. This step is to ensure there is no directory called sd-ext when your phone boots, avoiding any confusions
In init.rc, look for the on fs part. Under this part there will be a line that reads mount yaffs2 [email protected] /system noatime nodiratime. Below this will be another line that reads mount yaffs2 [email protected] /data nosuid nodev noatime nodiratime. Comment this line out with a # (#mount yaffs2 [email protected] /data nosuid nodev noatime nodiratime). Also, if you have mount yaffs2 [email protected] /system ro remount, comment that out too (make it #mount yaffs2 [email protected] /system ro remount)
Do all the following changes AFTER mount yaffs2 [email protected] /system noatime nodiratime, else the process will fail.
Code:
# Wait to ensure SD Card is available, and scanning file system of EXT
wait /dev/block/mmcblk0p2
wait /dev/block/mmcblk0p2
wait /dev/block/mmcblk0p2
wait /dev/block/mmcblk0p2
exec /system/xbin/busybox sh -c "/system/bin/e2fsck -f -p -t -t -v /dev/block/mmcblk0p2 > /system/fsck.log"
# Native Mount DataOnEXT
mount ext4 /dev/block/mmcblk0p2 /data wait nosuid nodev noatime nodiratime barrier=0 data=writeback
Leave everything else in this section as is - you will have another line to mount cache, do not remove or modify it.
Next, scroll down to the section that reads on boot. Add the following like under it:
Code:
# SD Card Cache
write /sys/devices/virtual/bdi/179:0/read_ahead_kb 2048
Build the NAND boot folder (for Magldr yboot) or boot.img (for cLK / Magldr rboot) as per your requirements
Head back to the Working folder, copy the boot directory or the boot.img and include it in your original ROM’s zip file (not the one you created for the kitchen, in case you had to). Check the init.d directory of the ROM’s zip to ensure there is no script that mounts the EXT partition to sd-ext directory, or has a move2sd/ app2sd/ int2sd script – delete such scripts!. Also make sure that your ROM's inatallation does not copy anything to /data during Installation. If it does, move those parts to /system. Or use the instructions I had given under Note to ROM Makers on ClockWorkMod Updater Script to mount the EXT partition as /data in Recovery.
Format your phone’s /system, /data, / sd-ext and /boot from clockworkmod and flash this modified rom.zip
Let your phone boot into Android and settle down.
Configure your Google Account
Download and install Titanium Backup
In Titanium Backup, restore all apps and their data from the backup you had taken earlier
You phone must now have an internal storage that is roughly equal to the size of your SD Card
Note:
I have tested this method with CM7, CM9, CM10 (ParanoidAndroid JB) and Sense ROMs. There has also been feedback that this is working on other AOSP based ROMs like MIUI.
The mount wait command is available in the init binary from CM7 onwards (not sure if it is there in CM6). If you are not sure (or cannot check the source code for init.c)
Misc & Changelog
Credits
All the Devs who are contributing their valuable time to get Android working on our phones
Proz0r for implementing something very similar to what I had wanted. He has essentially implemented the same thing, I am implementing this in a slightly different way, that's all. (To be clear, I did not borrow the idea even though a few others have had the same brainwave that I thought I got first - I only borrowed the part where we have the phone wait until the sd-ext partition is ready for being mounted)
Rick_1995 for the first hint to get this modification to work
Securecrt for showing that this modification is indeed possible
Xylograph for pointing me to another thread where this modification is already done
marco.palumbi - for showing me that I need not have an elaborate script to ensure /dev/block/mmcblk0p2 is available, and a mount... wait option is available in the CM source for init. Also for doing away with the need for extprep script and including the e2fsck routine complete with a fsck.log in init.rc itself.
kokotas - For the recovery-flashable version of this mod that simplifies migrating to DataOnEXT
Some of the benefits of this mod are:
Space - Obvisiouly. The 1GB/ 2GB/ 4GB sd-ext partition will be mounted as internal memory, instead of the usual /data partition from NAND
Reliability - EXT4 partition is arguably more reliable than YAFFS2
Working around Bad Blocks - Most of our phones would be having a bunch of bad blocks by now (lucky you, Hynix NAND folks!). With this method, the /data partition is mounted directly to the EXT partition in your SD Card, and the internal userdata NAND partition is untouched. This means you can create bigger system partitions to work your way around bad blocks. Incidently all the bad blocks my phone has is in the userdata partition - this might be so because that is the area that is written to the most.
Performance - A fast SD Card gives better transfer speeds than NAND (My ParanoidAndroid build is noticeably faster after this modification, with my Class 6 Transcend SD Card with 4GB sd-ext partition)
Simplicity - Don't have to worry about hoards of the a2sd scripts and their variants, and carry-out trial and error as to which ones work reliably with your ROM of choice. /data is transparently and natively mounted to sd-ext, so no more low-sound or other odd issues
/data/data can be in the sd-ext partition, and ROM updates will not corrupt it like in some a2sd scripts
Hassle-free - Whether an EU HD2 or TMoUS HD2, you set a large size (445 MB?!!) for /system and forget about partitioning, as the internal userdata partition is not used at all and can be of whatever size. I am using 300 MB system in both my phones. This is close to native Android phones, where we do not keep changing the system partition size for every ROM that is installed.
A proper multi-user setup - if you had to share the phone with someone else, all you have to do is swap out the SD Card you usually have in the phone to a fresh one that has the required FAT and EXT partitions. The other user will see a fresh Android install and configure whatever they want. When you get the phone back, all you have to do is put your usual SD Card back in, and voila! you have all your stuff just the way it was (Thanks to @teemoo for the tip!)
Trying a new ROM? Make sure you do not botch up your data! Just remove the SD Card you usually use and place one for testing. You can always mod the initrd.gz of your new ROM, flash the boot image or place the initrd,gz in /boot and replace your usual SD Card when you want all your apps, data and settings!
A Note on Cache
As many may remember (and some have pointed out), I had the initial trial with 8 MB of cache for SD Card interface. Over a period of time, I tried various sizes from 512 KB to 16 MB and found out that the cache size is dependant on the phone AND the SD Card that is in it. This experiment involves:
Setting a cache size in the extprep script
Booting from the boot.img using fastboot boot command
Waiting for my phone to connect to Google servers
Opening Root Explorer and confirming the cache size
Running SD Tools, testing the SD Card Read/ Write speeds thrice in a row
Changing the cache size in extprep script, recreating a boot,img, and starting from fastboot boot...
And here are my test results:
As you can see, the higher the cache, higher the difference between the Minimum and Maximum values for Reads. While this test does not consider ALL aspects (like random reads), this gives a good idea of what is the cache size that is the best for my phone and my SD Card. Note that I have two HD2 with 2 different brand/ class of SD Cards, and bot gave pretty different results. You may have to find the right cache size for your phone! Once you got the right cache, even a Class 2 card (the stock Sandisk 16 GB Class 2 that comes with the TMoUS HD2) performa pretty well - no deal-breaking lags even in games like Temple Run or Ninjump.
Also, you should be worried more about read speeds - that is what the phone does most of the time. Write speeds comes into picture mostly when you are installing something. All writes that happen after that are mostly incremental, and never something a major as what happens when you install an app.
Note to ROM Makers on ClockWorkMod Updater Script
While one of the benefits of this mod is that you can set a huge /system partition and forget trimming down anything, some ROMs mounts /data during CWM install to copy certain apps or parts of /system to the /data partition. For such a setup to work well with this mod, the /data partition should be mounted to the EXT partition in the SD Card. I am not sure if there is a straightforward mount command that can be used in updater-script to mount an MMC partition. Thanks to Looki75's post, I have made the script simpler...
The code in updater-script...
Code:
package_extract_dir("work", "/tmp");
format("MTD", "system");
format("MTD", "boot");
mount("MTD", "system", "/system");
mount("ext4","/dev/block/mmcblk0p2","/data");
ui_print("Copying files to /system");
package_extract_dir("system", "/system");
...
...
ui_print("Copying files to /data");
package_extract_dir("data", "/data");
FAQ
I will try and compile some sensible Questions from this thread in the FAQ Section. I request all to read the first three posts at least before asking any questions.
Q: I have an EXT2/ EXT3 partition. You are mounting it as EXT4. What gives?
A: Mounting as EXT4 is backwards compatible with EXT2/3
Q: Where are the initrd.gz that you had posted earlier?
A: I have moved them to this post
Q: Will you modify the initrd.gz from the <name of ROM>?
A: I took more than 6 Hours on a Sunday Night to re-do the first three posts, and give a step-by-step guide. Do you still want me to modify the initrd.gz for you?!! I might post the initrd.gz of ROMs I use or try from time to time, but please don't post requests for modding <name of your ROM>'s initrd.gz. What is that saying about giving a man a fish vs. teaching how to fish...??!
Q: Is ClockWorkMod or 4EXT or TWRP compatible with this mod?
A: Before I answer, note that almost all Recovery tools available for HD2 will mount the SD Card's EXT partition to the sd-ext directory. After doing this mod, /data (in Android) = /sd-ext (in Recovery)
Any backup that includes the sd-ext partition will backup your /data.
At least CWM based recovery will delete dalvik-cache from NAND's data and /sd-ext. After this mod, /data/dalvik-cache (Android) = sd-ext/dalvik-cache (Recovery), so yes deleting Dalvik Cache works
CWN Recovery's Fix Permissions runs in both internal data and sd-ext, so yes that works too
Q: Will installing <name of script/ mod for ROM>, which involves flashing something in Recovery, work after this mod?
A: If whatever you are flashing is limited to modifications in /system, no problems - it will work.
If what you are flashing involves changing or adding content to any part of /data then it will probably not. The reason is when you mount data in Recovery, you will by default mount the internal NAND. After this method, the internal NAND is untouched. You must either modify the updater-script (See Note to ROM Makers on ClockWorkMod Updater Script), or use QtADB/ ADB shell to do what the flashing is supposed to do.
Q: I am getting stuck at boot animation/ getting "Encryption Unsuccessful" message when Android boots...
A: Your ROM's init binary may not support the mount... wait option that I am using. There are other variants like wait <device>, and then mount <device>, see if you can find what it is from the source code of your ROM's init binary (init.c). If all else fails, you may have to include a copy of busybox in sbin, point all commands in extprep script to that busybox, and increase the sleep time using /sbin/busybox sleep 25 (that is an example). In any case, you DO NOT HAVE TO WIPE DATA or WIPE ANYTHING AS SUGGESTED BY THE INSTRUCTIONS IN "Encryption Unsuccessful" message
Q: Can I move part of /data from EXT partition to NAND?
A: You don't have to move anything - that is the beauty of this mod. If, for example, you want dalvik-cache to be in NAND, all you have to do is create a directory, mount NAND to that directory, and symlink /data/dalvik-cache to that directory. Example: In init.rc, make sure /data/dalvik-cache is NOT getting created (comment that line out with a #)
Code:
mkdir /dalvik 0771 system system
mount yaffs2 [email protected] /dalvik nodev nosuid noatime nodiratime
symlink /dalvik /data/dalvik-cache
Q: How do I improve performance?
SD Card interface by design cannot handle multiple read/ write activities simultaneously. An example: Put the SD Card in a card reader attached to your computer. Copy a ~500MB file to it, see what write speeds your get (Win 7 shows an approx value). Now, while the first file is still being copied, copy another similar sized file - what happens to the write speed? It crawls, right?
When you have DataOnEXT, the SD Card is continuously being read from and written to because all your apps, their data, system data and configuration, etc. resides in the EXT partition. You SHOULD NOT expect the same speeds like a full-NAND setup. That said, there a few things you can do to improve performance:
Get a performance SD Card like SanDisk Ultra® microSDXC™UHS-I card
ODEX your ROM
See the previous question's answer for moving dalvik cache to NAND
Increase the NAND's read ahead cache from 4KB to 128 ot 256KB (in init.htcleo.rc)
Set your IO Scheduler to Deadline (use No frills CPU Control)
Q: My ROM slows to a crawl after installing this mod when I install or remove an app...
A: That is normal behavior, let it be for a min or two and it will get back to the usual speeds. This is because installing or removing an app involves creating the DEX file in the dalvik cache, extracting the components (lib files, config files, etc.) for the app and placing them in appropriate locations in /data and so on. This will slow down the system responsiveness because all of these are in the EXT partition, and the SD Card interface is a serial interface that will slow down with multiple simultaneous read/ write requests. However, doing what I have said for the previous question will improve performance quite a bit
FAQ is still WIP, I will keep adding to this section as and when...
ph03n!x said:
Devs - Would be great if you can help me with a way to reliably mount the ext partition to /data in init.rc!!!
Click to expand...
Click to collapse
The problem is with the slow sd cards, Try something of this sort.
Code:
mount ....
while [ $? -ne 0]
do
echo "Waiting for slow sd card!"
sleep 5
mount ....
done
You might have to check a2sd script since I'm not sure what is the success test case for mount, most unix programs return zero so i've based it on that assumption.
Rick_1995 said:
The problem is with the slow sd cards, Try something of this sort.
Code:
mount ....
while [ $? -ne 0]
do
echo "Waiting for slow sd card!"
sleep 5
mount ....
done
You might have to check a2sd script since I'm not sure what is the success test case for mount, most unix programs return zero so i've based it on that assumption.
Click to expand...
Click to collapse
I tried a sleep command before the part where I mount the ext partition to /data, but that doesn't seem to work. I am still figuring out the script language used in Android's init.rc, including a if loop or a whole loop.
Looks like I have to create a service that calls an external script- at least that is how far I have come with my searching
Swyped from my HTC HD2 using xda premium
ph03n!x said:
Space - Obvisiouly. The 1GB/ 2GB/ 4GB sd-ext partition will be mounted as external memory
Click to expand...
Click to collapse
Think you mean internal here, I take it internal space is still used as cache (have an unanswered question in one of Xylo's threads as to why sdcard isn't mounted as cache).
Could you post just the init.rc file to see what modifications have been made?
In terms of loop, while trying to get a squashed system up and running (last squashed rom for HD2 was on gingerbread), the squashed files mounted fine (but couldn't get the system to fully boot, probably a libs issue), the mount command used in init.rc were:
Code:
mount squashfs [email protected]/system/fonts.sfs /system/fonts ro
placed after "on fs".
So modifying for this:
Code:
mount ext4 [email protected]/dev/block/mmcblk0p2 /data rw
, failing that you may need to mount it first as say /mnt/ext then loop.
The issue with the ext mount scripts that I've found (at least with link2sd) is that there is a delay in being granted superuser permissions, using init.rc should overcome that issue.
HypoTurtle said:
Think you mean internal here, I take it internal space is still used as cache (have an unanswered question in one of Xylo's threads as to why sdcard isn't mounted as cache).
Could you post just the init.rc file to see what modifications have been made?
In terms of loop, while trying to get a squashed system up and running (last squashed rom for HD2 was on gingerbread), the squashed files mounted fine (but couldn't get the system to fully boot, probably a libs issue), the mount command used in init.rc were:
Code:
mount squashfs [email protected]/system/fonts.sfs /system/fonts ro
placed after "on fs".
So modifying for this:
Code:
mount ext4 [email protected]/dev/block/mmcblk0p2 /data rw
, failing that you may need to mount it first as say /mnt/ext then loop.
The issue with the ext mount scripts that I've found (at least with link2sd) is that there is a delay in being granted superuser permissions, using init.rc should overcome that issue.
Click to expand...
Click to collapse
I meant internal indeed - corrected it
SD Card as Cache - Not sure if I checked back on the question, but I do remember the discussion. In most recent ROMs, /cache is a part of /data - this is to make space for large apps from the market that may otherwise be limited to the size of the cache partition. Instead of /data, we can have any other writable partition - SD Card or even SD-EXT - but symlinking it to /data seems hassle free and does not require anything more. Linking to SD Card may mean that the SD Card has to always be in the phone, and it should be mounted soon enough.
I haven't checked the loop part you have given - let me do some reading about it (or you can try it and let us know!). I will driving for the next several hours, will post the init.rc later today/ tomorrow...
HypoTurtle said:
Think you mean internal here, I take it internal space is still used as cache (have an unanswered question in one of Xylo's threads as to why sdcard isn't mounted as cache).
Could you post just the init.rc file to see what modifications have been made?
In terms of loop, while trying to get a squashed system up and running (last squashed rom for HD2 was on gingerbread), the squashed files mounted fine (but couldn't get the system to fully boot, probably a libs issue), the mount command used in init.rc were:
Code:
mount squashfs [email protected]/system/fonts.sfs /system/fonts ro
placed after "on fs".
So modifying for this:
Code:
mount ext4 [email protected]/dev/block/mmcblk0p2 /data rw
, failing that you may need to mount it first as say /mnt/ext then loop.
The issue with the ext mount scripts that I've found (at least with link2sd) is that there is a delay in being granted superuser permissions, using init.rc should overcome that issue.
Click to expand...
Click to collapse
ph03n!x said:
I meant internal indeed - corrected it
SD Card as Cache - Not sure if I checked back on the question, but I do remember the discussion. In most recent ROMs, /cache is a part of /data - this is to make space for large apps from the market that may otherwise be limited to the size of the cache partition. Instead of /data, we can have any other writable partition - SD Card or even SD-EXT - but symlinking it to /data seems hassle free and does not require anything more. Linking to SD Card may mean that the SD Card has to always be in the phone, and it should be mounted soon enough.
I haven't checked the loop part you have given - let me do some reading about it (or you can try it and let us know!). I will driving for the next several hours, will post the init.rc later today/ tomorrow...
Click to expand...
Click to collapse
Alright the mount loop command you mentioned and the looping I was discussing with Rick are different. The mount loop command mounts a file (eg: a .iso image) as a device.
The loop I was looking to create is a logical if... else or a while... do loop that will check if /dev/block/mmcblk0p2 is available, else will halt the boot process until it becomes available. The challenge (for me) its that the scripting language used in init.rc its not like the scripts we create for init.d
I am still doing some reading up...
Swyped from my HTC HD2 using XDA Premium
Will this work??
Starting your own service at boot.
...If you have a reason to add something or just what to try things out however it is relatively straight forward to add a native service to that init sequence. I have created a simple example that writes the time elapsed since it started to the log. It wakes up every three seconds. The code for exampleservice.c looks like:
Code:
#define LOG_TAG "Example Service"
#include < utils/log.h >
#include < unistd.h >
int main(int argc, char **argv)
{
LOGI("Service started");
int elapsed = 0;
while(1)
{
sleep(3);
elapsed += 3;
LOGI("Service elapsed time is %d", elapsed);
}
}
Place this somewhere in the platform build system and build as an executable. The build system will place the output in the /system/bin folder on the device. Now all that is needed is to add the following to the init.rc script:
Code:
service exampleservice /system/bin/exampleservice
user exampleservice
group exampleservice
oneshot
and your service will start on init. It is also possible to write your own file using the Android init language that enables your services and variables. Then just add a line to import the file in init.rc and you are done.
Source
Click to expand...
Click to collapse
Will this method work to pause the boot process until /dev/block/mmcblk0p2 becomes available? I do not have a dev environment setup - all I have is Cygwin that I use to edit boot.img, port some ROMs to test etc. Can someone help me create such a binary please? Again, I am good at logic and bad at writing/ compiling stuff
Alternatively, can cLK be made to wait until /dev/block/mmcblk0p2 is available? Thoughts?
What is the difference to this methods:
http://forum.xda-developers.com/showthread.php?t=1716124
Are you sure we need more I/O performance with sequencial r/w? Isn't the task with multitasking sutuations to have more perfomance with random r/w? Sdcards won't give that much improvement then: http://www.tomshardware.com/reviews/microsdhc-memory-card-performance,3011-12.html
ReinerK said:
What is the difference to this methods:
http://forum.xda-developers.com/showthread.php?t=1716124
Are you sure we need more I/O performance with sequencial r/w? Isn't the task with multitasking sutuations to have more perfomance with random r/w? Sdcards won't give that much improvement then: http://www.tomshardware.com/reviews/microsdhc-memory-card-performance,3011-12.html
Click to expand...
Click to collapse
In the CronMod as well as all A2SD methods, the Linux boot init process will mount /data to the internal NAND partition (userdata). During Android boot, /data or a part of /data is remounted or symlinked to the SD-EXT partition. This method has its own set of issues, both known and unpredictable. Read up the ROM threads with A2SD or similar stuff in HD2 Android NAND forum and HD2 Android General forum and you will know. This is a trial and error method which is a hit or a miss.
What I am trying to achieve is to have the Linux boot init process mount /data directly to the EXT partition in the SD Card, making this transparent to Android. As far as Android is concerned, it will see a /data partition like it sees a NAND /data partition when you do not use any of these scripts. With this method, there is no miss that I have experienced so far in my testing, except not being able to get the SD Card device ready in time for the Linux boot init process to mount it as /data. Once that is fixed, am sure many will see the benefits.
While the benchmark you have linked to gives a comparison of random and sequential transfer rates of Flash Memory from 9 months ago (it does not even have all that many decent class6 cards that are available now), have you find anything on the transfer rates of NAND? While I remember a HD2 user benchmarking NAND transfer rates, I do not remember the exact values but do remember it was not good. From my personal opinion, the same ROM felt faster with this modification - note that after the first boot all the apps (system or user) that you see and use will be loaded from dalvik-cache which is located in /data. All app data and databases are read/ written in the /data partition. Hence the responsiveness of the phone will be directly proportional on how fast the data partition is - in my case it is my class6 SD Card's EXT partition.
There is also the issue with bad block NAND making several flashaholics' phones unusable or unstable. EXT2/3/4 partitions have better data consistency management and also have e2fsck - it would not be without a reason that Google moved to EXT4 NAND format for their recent phones
Even if you have an International HD2 with 512 MB NAND, with this method you can use almost all of that space (except spaces reserved for bootloader, recovery, misc, etc.) for /system partition which will definitely make the phone live a lot longer even with bad blocks, what with recent cLK versions letting you manipulate partition layouts.
I can keep going on the benefits of having EXT partitions and the benefits of this method, but that would beat the purpose of this thread. Let's see if we can get EXT mounted during boot to /data reliably and consistently. Whether anyone wants to use that method is, of course, their choice
By the way, have anyone used the test ROMs? Any feedback?
I think yaffs file system is used by HTC only, other droid phones already using EXT file system on NAND.
Thats why some phones has good I/O benchmark
Even if it was possible to use EXT4 on HTC HD2 nand would be big improvment
ph03n!x said:
...This is a trial and error method which is a hit or a miss.
Click to expand...
Click to collapse
That's true. Sine even tytung Roms are bigger than 150MB I used 40a2sdx, and I noticed performance problems and sometimes low sound bug. Well I can live with this, but without of cource would be better
ph03n!x said:
While the benchmark you have linked to gives a comparison of random and sequential transfer rates of Flash Memory from 9 months ago
Click to expand...
Click to collapse
I am sorry, I did not found any newer tests in english language. But I think 9 month old test are okay, cause most people use their µSDs several years (my 2009 SanDisk 16GB one just died ).
ph03n!x said:
There is also the issue with bad block NAND making several flashaholics' phones unusable or unstable
Click to expand...
Click to collapse
They should just stop doin' task29 whenever they only wanna flash a rom or change the partition layout.
ph03n!x said:
I can keep going on the benefits of having EXT partitions and the benefits of this method, but that would beat the purpose of this thread. Let's see if we can get EXT mounted during boot to /data reliably and consistently. Whether anyone wants to use that method is, of course, their choice
Click to expand...
Click to collapse
I am pleased to hear that you wanna find a way that way. I just don't have an extra phone to test your rom atm.
Anyway, thaks a lot for your explanations!
ph03n!x said:
In the CronMod as well as all A2SD methods, the Linux boot init process will mount /data to the internal NAND partition (userdata). During Android boot, /data or a part of /data is remounted or symlinked to the SD-EXT partition. This method has its own set of issues, both known and unpredictable. Read up the ROM threads with A2SD or similar stuff in HD2 Android NAND forum and HD2 Android General forum and you will know. This is a trial and error method which is a hit or a miss.
Click to expand...
Click to collapse
Reason I believe it is hit or miss is because during boot init.d scripts in most of the roms runs in parallel. hence while scripts is trying to re-mount/re-link the data partition Android boot-up continues and causes problem. if we pause the android bootup while scripts finishes its job of setting up links correctly I think problem should go away. take a look at this
Code:
# Execute files in /system/etc/init.d before booting
# service sysinit /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/init.d
# class main
# disabled
# oneshot
if we change that to
Code:
exec /system/bin/sysinit
problem with A2SD scripts should be solved of-course you will have to modify any scripts which sits in infinite loop.
take a look at my latest JB AOSP roms or miui ICS roms.
-----Update----
what if we leave both the method in there
service method to run init.d scripts
and
exec method to pause the boot-up till sd-card is mounted and sd-ext is available.
lets says
make sysinit-1 which will execute the script from init.d1 directory which will have script to check the sd-ext availability
I am close to a solution - looks like a few other devices have already mounted EXT partitions in the SD Card to /system or /data. Here is the command:
Code:
devwait /dev/block/mmcblk0p2
mount ext2 /dev/block/mmcblk0p2 /data nodev nosuid noatime nodiratime
(Check this thread).
But the problem is it is still not mounting. Does this need anything in the kernel/ init? Even the batter-pull technique is not working! The phone is booting as if it is a fresh installation, though I do not see any mounted /data partition
The other option from the same thread is to have
Code:
pause (5);
in init.c and compile is at a binary.
Another bit of information I have come across:
Code:
on emmc-fs
# mount mmc partitions
wait /dev/block/mmcblk0p13
exec /system/bin/e2fsck -p /dev/block/mmcblk0p13
mount ext4 /dev/block/mmcblk0p13 /data nosuid nodev barrier=1 noauto_da_alloc,noinit_itable,nodelalloc
(from here).
With this, the phone is going back to the Encryption Unsuccessful mode.
Pretty sleepy already, gonna call it a day for now - my poor phone has undergone a bunch of boots and reboots for a day
smokin901 said:
Reason I believe it is hit or miss is because during boot init.d scripts in most of the roms runs in parallel. hence while scripts is trying to re-mount/re-link the data partition Android boot-up continues and causes problem. if we pause the android bootup while scripts finishes its job of setting up links correctly I think problem should go away. take a look at this
Code:
# Execute files in /system/etc/init.d before booting
# service sysinit /system/bin/logwrapper /system/xbin/busybox run-parts /system/etc/init.d
# class main
# disabled
# oneshot
if we change that to
Code:
exec /system/bin/sysinit
problem with A2SD scripts should be solved of-course you will have to modify any scripts which sits in infinite loop.
take a look at my latest JB AOSP roms or miui ICS roms.
Click to expand...
Click to collapse
Thanks, I will check your ROM. I would still like to get /data to sd-ext working before Android boots though I thought I was close today, but unfortunately no!
Looks like there had been some progress to this cause, thanks to @securecrt! Check this post.
Swyped from my HTC HD2 using XDA Premium
ph03n!x said:
Mounting - /dev/block/mmcblk0p2 is not getting mounted to /data at every boot/ reboot reliably. This results is the phone not booting at all (Gingerbread) or giving an Encryption Failed, wipe data prompt (This is a feature of ICS/ JB, if /data is not accessible, the OS will boot with a temporary /data file system to show this error).
I have not been able to find a way to reliably carry out this mount - my best guess is that the SD Card Reader interface is not getting ready in time to be mounted to /data. I do not know how to make the boot process wait until the device is available.
ClockWorkMod/ Other recoveries - As the recovery boot images are still mounting userdata to /data and the ext partition to sd-ext, you will have to access sd-ext to access your data. What this means is that if you are moving ROMs, a direct CWM backup restore won't work unless the new ROM also has this modification
Performance- is only as good or bad as your SD Card. My second HD2 has a class 2 SD Card, and I do not find any performance difference. While this is not bad, the SD Card I am talking about is a decent SanDisk card. If you have something with poor transfer rates, performance will suffer
SD Card cannot be removed from the system while Android is running!!!
Click to expand...
Click to collapse
This is, obviously, not compatible with other setups, such as those using some type of ad2sd script (i.e. Amarulls), correct?
CWM Recovery backup should still work since it does backup sd-ext, no?
I need another sd card to play..
Ok, I need some help-
securecrt said:
the trick is:
1. rename the init to init.android
2. create a script named init, mount the system/data in this script, you can add a few sleep time in this to confirm the mount is alreay done and then execut init.android
3. disable the system/data mount in init.rc
Click to expand...
Click to collapse
Ever since @securecrt posted this, I have been running in circles. Here is what I have done:
Renamed init to init.android
Commented out in init.rc:
Code:
#mkdir /data 0771 system system
Commented out in init.rc:
Code:
#mount ext4 /dev/block/mmcblk0p2 /data nosuid nodev noatime nodiratime
Created a script named init with
Code:
#!/sbin/busybox sh
export PATH=/sbin
sleep 10
mkdir /dev
mkdir /dev/block
mknod /dev/block/mmcblk0p2 b 179 2
mkdir /data 0771 system system
mount ext4 /dev/block/mmcblk0p2 /data nosuid nodev noatime nodiratime
/init.android
Copied busybox binary to /sbin/busybox
Created the initrd.gz and flashed
The phone is booting to second boot (logo.rle loads), and then reboots.
Like I've said I have very limited Linux/ coding skills. Would be great if someone can nudge me in the right direction!
ny_limited said:
This is, obviously, not compatible with other setups, such as those using some type of ad2sd script (i.e. Amarulls), correct?
CWM Recovery backup should still work since it does backup sd-ext, no?
Click to expand...
Click to collapse
Yes, you need to remove all variants of a2sd/ link2sd scripts.
CWM Recovery will back up SD-EXT as /sd-ext, but Android will load it as /data after this mod. So if you are going to try this mod, you need to titanium backup all you system/ user app+data, install the modified mod or initrd.gz, make sure you have a ext partition, boot to Android and restore the backup from titanium. And the exact same if you are removing the mod (in which case it will be original initrd.gz).
I can sense that I am pretty close to getting this to work reliably, except for being a dunce in Linux/ Scripting. With little help this mod is a go for daily use
ph03n!x said:
Ok, I need some help-Ever since @securecrt posted this, I have been running in circles. Here is what I have done:
Renamed init to init.android
Commented out in init.rc:
Code:
#mkdir /data 0771 system system
Commented out in init.rc:
Code:
#mount ext4 /dev/block/mmcblk0p2 /data nosuid nodev noatime nodiratime
Created a script named init with
Code:
#!/sbin/busybox sh
export PATH=/sbin
sleep 10
mkdir /dev
mkdir /dev/block
mknod /dev/block/mmcblk0p2 b 179 2
mkdir /data 0771 system system
mount ext4 /dev/block/mmcblk0p2 /data nosuid nodev noatime nodiratime
/init.android
Copied busybox binary to /sbin/busybox
Created the initrd.gz and flashed
The phone is booting to second boot (logo.rle loads), and then reboots.
Like I've said I have very limited Linux/ coding skills. Would be great if someone can nudge me in the right direction!
Click to expand...
Click to collapse
I am sure securecrt will reveal his secret soon, m8.. I wouldn't 'waste' my time on it since he is already running it and knows how to do it
Maybe you can send him a PM if the wait is killing you ?
I'm not exactly new to linux, or android, but I'm not familiar with how android treats external storage vs. internal.
I had advised a few people to format their external drives as ext4 since the kernel would probably support it (and the system, data and cache partitions are ext4 so it DOES). However, when I format my external storage (32gb and 1gb USB sticks) to ext*, it doesn't show up, even in the logcat or in ES File Explorer (or a mount command, but with no root or fdisk -l i didn't dig too far).
So I was wondering if anyone happens to know why thats the case. Clearly the kernel supprots ext4, but you can't mount external storage with it?
FYI, so far that I've seen, I can't format external storage with the ouya. It also only supports NTFS read, and FAT32 R/W.
kill-9 said:
I'm not exactly new to linux, or android, but I'm not familiar with how android treats external storage vs. internal.
I had advised a few people to format their external drives as ext4 since the kernel would probably support it (and the system, data and cache partitions are ext4 so it DOES). However, when I format my external storage (32gb and 1gb USB sticks) to ext*, it doesn't show up, even in the logcat or in ES File Explorer (or a mount command, but with no root or fdisk -l i didn't dig too far).
So I was wondering if anyone happens to know why thats the case. Clearly the kernel supprots ext4, but you can't mount external storage with it?
FYI, so far that I've seen, I can't format external storage with the ouya. It also only supports NTFS read, and FAT32 R/W.
Click to expand...
Click to collapse
I've asked this question too, I tried with different harddrives to all the ext formats and nothing picks it up. there are a few apps like ntfs mounter which supports ext but requires rooting.
Android only recognises FAT32 and I think CDFS and UDF. May also recognise FAT16. NTFS and exFAT are both patented so need expensive licenses for a manufacturer to include them in devices (a few do on their modified firmwares).
I have no idea why ext isn't supported though. I presume it is something to do with the relative rarity of ext drives outside of Linux boot devices.
SixSixSevenSeven said:
Android only recognises FAT32 and I think CDFS and UDF. May also recognise FAT16. NTFS and exFAT are both patented so need expensive licenses for a manufacturer to include them in devices (a few do on their modified firmwares).
I have no idea why ext isn't supported though. I presume it is something to do with the relative rarity of ext drives outside of Linux boot devices.
Click to expand...
Click to collapse
isnt the internal memory ext4?
anyone who has there ouya rooted could you please try one of the harddrive mounting apks like paragon or ntfs mounter and see if the ext formats get picked up?
got ext3 working with usb otg helper app. You need root access.
No problem mounting ext4
Just made myself a 15GB ext4 formatted second partition on a 32GB usb drive. Just because Ouya only looks at the first partition, and assumes it's fat32 should not discourage you. Just open a adb shell to your Ouya, become superuser, create a directory /mnt/mydata, and mount it:
In adb shell:
1. su
2. mkdir /mnt/mydata
3. mount -t ext4 /dev/block/vold/8\:2 /mnt/mydata
kill-9 said:
I'm not exactly new to linux, or android, but I'm not familiar with how android treats external storage vs. internal.
I had advised a few people to format their external drives as ext4 since the kernel would probably support it (and the system, data and cache partitions are ext4 so it DOES). However, when I format my external storage (32gb and 1gb USB sticks) to ext*, it doesn't show up, even in the logcat or in ES File Explorer (or a mount command, but with no root or fdisk -l i didn't dig too far).
So I was wondering if anyone happens to know why thats the case. Clearly the kernel supprots ext4, but you can't mount external storage with it?
FYI, so far that I've seen, I can't format external storage with the ouya. It also only supports NTFS read, and FAT32 R/W.
Click to expand...
Click to collapse
Not Actually True
SixSixSevenSeven said:
Android only recognises FAT32 and I think CDFS and UDF. May also recognise FAT16. NTFS and exFAT are both patented so need expensive licenses for a manufacturer to include them in devices (a few do on their modified firmwares).
I have no idea why ext isn't supported though. I presume it is something to do with the relative rarity of ext drives outside of Linux boot devices.
Click to expand...
Click to collapse
There is in fact a standard read-only NTFS driver in LInux, and it's supported on the OUYA. An NTFS-formatted USB hard drive automounts upon hot plugin.
I finally got a reply back from ouya support about ext3/4 not being recognized and they said its been resolved. Looking forward to the next firmware.
Main thread + features + install instructions + dev support
http://forum.xda-developers.com/showthread.php?t=2201860
PhilZ Touch is a CWM Advanced Edition that adds all the features you could ever miss in CWM
It is a well proven recovery for many phones
It also adds a full touch interface a completely configurable GUI
Please give your feedback, what works, and any bug you could encounter
Read the features, and check if you are missing something
Also, do not forget to read about the powerful aroma file manager integration and double tap shortcut
Download links
Last version can be found here:
Now: one common recovery for all: d2lte
The below specific variants are no more updated, use d2lte common variant
SGH-T999 (d2tmo)
http://goo.im/devs/philz_touch/CWM_Advanced_Edition
Click to expand...
Click to collapse
Reporting issues:
1- Keep in mind I do not own the device: be precise in your description providing step by step details and screen log output
2- Provide a log: Advanced / Report Error, then attach the philz_recovery.log here
exfat is enabled: report if working or not
Let me know about any issue so that we can debug it + LOGS
Downloading now, will flash in a second or two and report back.
mt3g said:
Downloading now, will flash in a second or two and report back.
Click to expand...
Click to collapse
Will be waiting for first feedbacks, first bugs, or a first perfect (would be rare, even if I am getting a bit used now to Qualcomm devices)
Flashes fine and looks great.
The time is off by 7 hours for me looked in settings for creating a time zone slot, with no success. The screenshot feature is dope but didn't work, gave me tears and not visible screens. Will flash a kernel in a second to test that much out. Will flash a ROM and create a backup later to test more thorough. The screen is what I got from swipe to left for screenshot in recovery.
EDIT: Kernel falshed fine. so all in all no real issues to report as it works as a recovery should, all but testing nandroid and restoring.
T-Mobile SGS III
mt3g said:
Flashes fine and looks great.
The time is off by 7 hours for me looked in settings for creating a time zone slot, with no success. The screenshot feature is dope but didn't work, gave me tears and not visible screens. Will flash a kernel in a second to test that much out. Will flash a ROM and create a backup later to test more thorough. The screen is what I got from swipe to left for screenshot in recovery.
EDIT: Kernel falshed fine. so all in all no real issues to report as it works as a recovery should, all but testing nandroid and restoring.
T-Mobile SGS III
Click to expand...
Click to collapse
Thank you for the positiv eearly report
fb2png for screenshots doesn't support most new boards. Hopefully it will be fixed later
Time is GMT by default. Time zone can be set under GUI settings, it should work. If not, provide a log
Phil3759 said:
Thank you for the positiv eearly report
fb2png for screenshots doesn't support most new boards. Hopefully it will be fixed later
Time is GMT by default. Time zone can be set under GUI settings, it should work. If not, provide a log
Click to expand...
Click to collapse
It sure was and time is correct now, I like the brightness settings also, lots of goodies in there. I'll report back later tonight if no one else does on nandroid and such.
ill try it out im using twrp recovery so itll be fun to try something new lol
omg! its touch enabled
and i like the color at first the layout is a win for me so far and ui is to
great job
clock is working changed to my time zone with daylight savings time fine
omg just found out i can you my home back and menu in it
im having fun playing with it im easy to entertain lol give me a break
ok new favorite recovery lol im hooked lol
I do not expect any issue with nandroid backups as it was largely debugged now on other devices
However:
- Mount USB storage works?
- exfat is ok?
- A last important point: when you boot into recovery, /system is mounted or unmounted? To see this, go into Mounts and Storage menu after you booted in recovery. /system should show (mount) and not (unmount)
I ask this to tune things if needed as this is completely repacked around stock ramdisk and kernel to enable exfat mainly
My stuff is fat32 so I can't help there... system is not mounted it shows mount/ system
Just booting into it and scrolling through some of the options was a treat within itself. Don't have much more to say (that hasn't been said already) but I'm glad we're able to have such a refined recovery. I'll let you know if I bump into any issues, as I tend to not stay in recovery mode for too long (when I actually have something to flash, etc. I'll test more). Thanks!
Sent from my SGH-T999 using Tapatalk 4 Beta
Phil3759 said:
Main thread + features + install instructions + dev support
http://forum.xda-developers.com/showthread.php?t=2201860
PhilZ Touch is a CWM Advanced Edition that adds all the features you could ever miss in CWM
It is a well proven recovery for many phones
It also adds a full touch interface a completely configurable GUI
Please give your feedback, what works, and any bug you could encounter
Read the features, and check if you are missing something
Also, do not forget to read about the powerful aroma file manager integration and double tap shortcut
Download links
Last version can be found here:
Click to expand...
Click to collapse
I was able to install it perfectly with Odin with the only difference from your installation instructions being that the phone rebooted into normal mode, so I just entered recovery mode via Rom Toolbox.
I am unable to access an external 64GB SDXC formatted as exFat. I tried to mount /external_sd and /sd-ext and neither one worked. I don't know if this is relevant but the normal mount point for the external SD card on the Galaxy S3 is /mnt/extSdCard.
The aroma file manager doesn't see the external card either.
Everything else seems to be working though I haven't tried to do a backup or a restore.
Thanks for your help...
Love the UI! Very easy to navigate. Everything seems to be running smoothly so far. Installed a few AOSP and TW ROMs successfully. Kernels I've tested are BMS, KT747, and LK. All were successful as well.
EDIT: Backup and restore options seem to work just fine. No issues with Mounts or storage I'm on a fat32 card so I can't test exfat unfortunately. Will let you know if anything comes up within the next day or 2.
Thank you very much for sharing this. It is pretty dope.
Thank you all
Will wait a bit more for reports about exfat
Some 64Gb cards always caused issues on some phones, mainly if they were not formatted as they should (primary partition and default block size)
Sent from my GT-I9100 using Tapatalk 2
I tried flashing the zip file but install keeps aborting?
Sent from my SAMSUNG-SGH-I747 using xda premium
Phil3759 said:
Thank you all
Will wait a bit more for reports about exfat
Some 64Gb cards always caused issues on some phones, mainly if they were not formatted as they should (primary partition and default block size)
Sent from my GT-I9100 using Tapatalk 2
Click to expand...
Click to collapse
When I had problems with the early exfat drivers from Samsung, I reformatted the card as Fat32 and ran with that for some time. After installing an update from Samsung/T-Mobile where the exFat issues were fixed I used the following procedure to convert the card to exFat:
1. Copied all data from the card to a PC via a card reader.
2. Deleted all partitions from the card using a partition manager on the pc
3. Installed the card into the phone and let the phone partition and reformat the card.
4. Copied all data from the PC back to the card via a card reader.
5. Re-installed the card into the phone.
It has been several months since I converted the card back to exFat and I have had no problems with app on the phone accessing the card. This include Nandroid Manager, Online Nandroid and Titanium Backup as well as all of the normal Android utilities.
The partition information is:
Partition Type: Primary
Psttition Type Id: 0x0C
File System: exFAT
Serial #: 0
First Physical Sector: 2048 (Cyl: 0, Hd:32, Sect: 33)
Last Physical Sector 124735487 (Cyl: 7764, Hd: 108, Sect: 24)
Total Physical Sectors: 124733440 (60905.0MB)
Physical Geometry: 7764 Cyls, 255 Hds, 64 Sects.
That's the best that I could do on short notice. I am trying to find a utility that will give me more information under Windows 7.
Thanks again and again...
Mike
P.S. If I can help with some testing or programming, please let me know. I'm fighting learning java but I am pretty good with C/C++ and assembler.
ChitownWingMan said:
When I had problems with the early exfat drivers from Samsung, I reformatted the card as Fat32 and ran with that for some time. After installing an update from Samsung/T-Mobile where the exFat issues were fixed I used the following procedure to convert the card to exFat:
1. Copied all data from the card to a PC via a card reader.
2. Deleted all partitions from the card using a partition manager on the pc
3. Installed the card into the phone and let the phone partition and reformat the card.
4. Copied all data from the PC back to the card via a card reader.
5. Re-installed the card into the phone.
It has been several months since I converted the card back to exFat and I have had no problems with app on the phone accessing the card. This include Nandroid Manager, Online Nandroid and Titanium Backup as well as all of the normal Android utilities.
The partition information is:
Partition Type: Primary
Psttition Type Id: 0x0C
File System: exFAT
Serial #: 0
First Physical Sector: 2048 (Cyl: 0, Hd:32, Sect: 33)
Last Physical Sector 124735487 (Cyl: 7764, Hd: 108, Sect: 24)
Total Physical Sectors: 124733440 (60905.0MB)
Physical Geometry: 7764 Cyls, 255 Hds, 64 Sects.
That's the best that I could do on short notice. I am trying to find a utility that will give me more information under Windows 7.
Thanks again and again...
Mike
P.S. If I can help with some testing or programming, please let me know. I'm fighting learning java but I am pretty good with C/C++ and assembler.
Click to expand...
Click to collapse
Sadly, without a recovery log or even better a dmsg log, I cannot help a lot
exfat drivers are from /system/lib, so the ones used by your ROM. They are not bundled with the recovery as that causes issues for some
can you try this in adb shell:
Code:
mount -t extfat /external_sd
Give the error message if it fails
If it fails, try this
Code:
mount /system
insmod -f -v /system/lib/modules/exfat_core.ko
insmod -f -v /system/lib/modules/exfat_fs.ko
mount -t extfat /external_sd
Give output of these command lines if they do fail
Phil3759 said:
Sadly, without a recovery log or even better a dmsg log, I cannot help a lot
exfat drivers are from /system/lib, so the ones used by your ROM. They are not bundled with the recovery as that causes issues for some
can you try this in adb shell:
Code:
mount -t extfat /external_sd
Give the error message if it fails
If it fails, try this
Code:
mount /system
insmod -f -v /system/lib/modules/exfat_core.ko
insmod -f -v /system/lib/modules/exfat_fs.ko
mount -t extfat /external_sd
Give output of these command lines if they do fail
Click to expand...
Click to collapse
Manual mount:
~ # mount -t extfat /external_sd
mount -t extfat /external_sd
mount: mounting /dev/block/mmcblk1p1 on /external_sd failed: Invalid argument
The mount was successful after the insmod commands. I was also able to cd to /external_sd and do an "ls -l".
Can I modify a script to include the insmod's or do you have to do it?
Thanks again...
ChitownWingMan said:
Manual mount:
~ # mount -t extfat /external_sd
mount -t extfat /external_sd
mount: mounting /dev/block/mmcblk1p1 on /external_sd failed: Invalid argument
The mount was successful after the insmod commands. I was also able to cd to /external_sd and do an "ls -l".
Can I modify a script to include the insmod's or do you have to do it?
Thanks again...
Click to expand...
Click to collapse
Ok, we're on the way to fix it
Can you try this now, in adb shell, after a recovery reboot please
Code:
mount /system
insmod /system/lib/modules/exfat_core.ko
insmod /system/lib/modules/exfat_fs.ko
mount -t extfat /external_sd
That way I can limit the potential causes. It is same as above without insmod options in command
Phil3759 said:
Ok, we're on the way to fix it
Can you try this now, in adb shell, after a recovery reboot please
Code:
mount /system
insmod /system/lib/modules/exfat_core.ko
insmod /system/lib/modules/exfat_fs.ko
mount -t extfat /external_sd
That way I can limit the potential causes
Click to expand...
Click to collapse
Before I tried what you asked I rebooted into recovery. In other words, I ran the adb shell commands while the phone was in your recovery program. Is that what you mean?
So what I have gathered is that this phone even with root/cmod/titanium backup doesn't allow me to move apps to my _real_ sdcard. So is it really phone related or is there a way to do it with custom rom/kernel or some other way?
leripe said:
So what I have gathered is that this phone even with root/cmod/titanium backup doesn't allow me to move apps to my _real_ sdcard. So is it really phone related or is there a way to do it with custom rom/kernel or some other way?
Click to expand...
Click to collapse
on stock android 4.2 u could actually use app2sd to move some apps to external storage
using Cyanogenmode 4.3 based Carbon MOD i found that i no longer can do that, tried app2sd and link2sd
i read somewhere that external storage is defined in system PATH variables, dont know how relevant that is but seems connected
but i honestly dont know yet much about the android platform to fix this issue myself, so i might be wrong
we need some pro tip help
Would be very interesting to habe feature. Especially for phones with only 8 GB internal flash. Hope this will come for my s4 Mini. Samsung has this implemented in their stock Rom.
Gesendet von meinem GT-I9195 mit Tapatalk
tesme33 said:
Would be very interesting to habe feature. Especially for phones with only 8 GB internal flash. Hope this will come for my s4 Mini. Samsung has this implemented in their stock Rom.
Gesendet von meinem GT-I9195 mit Tapatalk
Click to expand...
Click to collapse
Yes this would be awesome, but seems that cmod has gone moneymaking company and tries to make cmod to google standards which means they have been starting to remove/hiding features. Their goal now is to make installing cmod without cwm and to remove root or have it as optional feature. Or all this is what I gathered over the net, but I still hope some other custom rom could have this feature.
Edit:
All of the above may not be like that nowadays, and this is somewhat speculation since there hasn't(?) been an official statement from cm about app2sd support. Though emulated sdcard may require something different.
(edited 19.2.2014)
Moving apps to external card.
leripe said:
Yes this would be awesome, but seems that cmod has gone moneymaking company and tries to make cmod to google standards which means they have been starting to remove/hiding features. Their goal now is to make installing cmod without cmw and to remove root or have it as optional feature. Or all this is what I gathered over the net, but I still hope some other custom rom could have this feature. This feature may only need one to repartition the sdcard, but I can't get it to mount as mass storage nor with sdcard reader(it shows "empty" card) in windows(maybe i should try it in linux).
Click to expand...
Click to collapse
About two months ago I upgraded my Xoom to JB 4.2.2, and because space was limited, I hadn't noticed whether I could move operating programs to the external card or not. This was a custom rom. Well, I was using a 32 Gig card that was nearly full of data.
This last week, I invested in a 64 Gig sdhc card and upgraded my rom to Kit-Kat 4.4.2. Thus its also a custom rom, but now I find that though, for the most part, I can designate the external card to store and access data from, I can't run programs from it. Hmm!
Here I am with all this memory. Sure wish I had better management options.
Kingsman1 said:
About two months ago I upgraded my Xoom to JB 4.2.2, and because space was limited, I hadn't noticed whether I could move operating programs to the external card or not. This was a custom rom. Well, I was using a 32 Gig card that was nearly full of data.
This last week, I invested in a 64 Gig sdhc card and upgraded my rom to Kit-Kat 4.4.2. Thus its also a custom rom, but now I find that though, for the most part, I can designate the external card to store and access data from, I can't run programs from it. Hmm!
Here I am with all this memory. Sure wish I had better management options.
Click to expand...
Click to collapse
Well check my thread on my signature and the requests section in the 1st post for more info on about app2sd.
Resolve the issue
Hi all,,,
This is my first time in XDA. Someone fixed this bug for me. You need to be rooted to fix this issue. Install from market Terminal Emulator and type the following commands
su
/system/bin/restorecon -R -v /data/media/
dlightx said:
Hi all,,,
This is my first time in XDA. Someone fixed this bug for me. You need to be rooted to fix this issue. Install from market Terminal Emulator and type the following commands
su
/system/bin/restorecon -R -v /data/media/
Click to expand...
Click to collapse
Can I check with you what bug this fixes?
Ability to use app2sd?
I use FolderMount and works real well. No need to partitioning sd card.
I've gotten to getting Link2SD working on the GT-I9195 with nightly 20140402 KitKat.
Based loosely on [Tutorial/HOWTO] Convert Your External SD Card from FAT/exFAT to EXT4! (3 ways!)
1. Clear everything out of your external SD card. We're gonna be formatting it so you'll have to backup your data.
2. Boot up into recovery and have a working ADB environment setup on your computer
3. adb shell (Do NOT mount your /storage/sdcard1)
5. Check that you have fdisk and mke2fs installed (Type fdisk --help and mke2fs --help ensure they don't throw up errors)
6. fdisk /dev/block/mmcblk1
7. Type o and Enter to destroy the partition table
8. Type n to create a new partition. Make sure its Primary (p). Select first partition and choose how many cylinders you want to allocate to it.
9. Type n to create your second partition. Again, make sure its Primary (p). Leave cylinder allocation blank to use remainder of space by default.
10. Verify partition layout by typing p to show partition layout.
11. Exit fdisk and save changes by typing w
12. mke2fs -t ext4 /dev/block/mmcblk1p1
13. mke2fs -t ext4 /dev/block/mmcblk1p2
14. reboot
15. Once CM has booted up, check if your external storage partition 1 has been mounted. It should be mounted at /mnt/media_rw/sdcard1
16. Try creating a folder in /mnt/media_rw/sdcard1 and /storage/sdcard1 to test if your read/write permissions are correct.
17. Install DiskInfo from playstore to check if your second partition is visible
18. Once done, install Link2SD and select ext4 when prompted to ask what kind of filesystem your 2nd partition is.
19. Reboot after Link2SD installs scripts.
20. Voila!
Let me know if there are any issues. I modified several files while doing this so not sure if any of them affected.
Should #16 not work, try:
1. Going to /system/etc/permissions/platform.xml and adding media_rw group to the element that only has sdcard_r group in it.
2. Typing mount in Terminal Emulator (su) or adb shell and see whether your partitions are mounted. If you're not sure, post the output out here.
Final mount output (filtered with mmcblk1 or sdcard stuff):
Code:
/dev/block/mmcblk1p2 /data/sdext2 ext4 rw,seclabel,relatime,data=ordered 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_i
d=1023,default_permissions,allow_other 0 0
/dev/block/vold/179:33 /mnt/media_rw/sdcard1 ext4 rw,dirsync,context=u:object_r:
sdcard_external:s0,nosuid,nodev,noexec,noatime,data=ordered 0 0
/dev/fuse /storage/sdcard1 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1
023,default_permissions,allow_other 0 0
EDIT 2: *** IMPORTANT!! Do NOT select External in the App2SD option in Link2SD. Otherwise you will not be able to install any apps from the Play Store (Insufficient Storage error)
I use GL to SD on my Slimrom: https://play.google.com/store/apps/details?id=com.slf.ListglApp
It may not have fancy UI like FolderMount or Link2SD, and it slight complex to use. But it works on per app basis, without re-partition too.
Hi leripe !
I have got the same device and ROM like you and i would like to know if you have found a solution to move apps to the sdcard ?
Thank you in advance, regards.
Oijkn said:
Hi leripe !
I have got the same device and ROM like you and i would like to know if you have found a solution to move apps to the sdcard ?
Thank you in advance, regards.
Click to expand...
Click to collapse
If it non system apps, you can use GL to SD as I provide the link already above. It works.
TNCS said:
If it non system apps, you can use GL to SD as I provide the link already above. It works.
Click to expand...
Click to collapse
Hi, i tried your link but this tool don't show all my user app so i can't move them... Have you another tool that can do the job please?
Oijkn said:
Hi, i tried your link but this tool don't show all my user app so i can't move them... Have you another tool that can do the job please?
Click to expand...
Click to collapse
Nope, sorry. I tried this tool and it work so never bother to look for another one.
If GL to SD doesn't have the app you want to move, you can manually link the app and the relevant folder at GL to SD settings. After you linked them, at the main page of apps you can tell it to start to move.
This thread shows up on google for me when trying to figure out why minitool partition wizard doesn't detect my phone at all. The guide I'm following says USB-SDcard reader is required but is that really true?? Surely there is a way to mount the SDcard at a low enough level to partition it without addition hardware?? Even if I have to mount it using TWRP recovery or something I would think it's possible. Anyone know?