[Q] Make Mount Bind Permanent - Galaxy Note II Q&A, Help & Troubleshooting

Hello People,
I have a question regarding mount bind,
I have one directory on ext-sd that I have mount bind with a directory on sdcard to save space on sdcard with the command,
Code:
mount -o bind /storage/extSdCard/WhatsApp /sdcard/WhatsApp
Now the question is how can I make it permanent as I see it gets unmounted after some time and after a device reboot.
As I see there is no /etc/init.d and I am unsure of how and where to make a start-up script, Searching has been unsuccessful so far
Thanks.

Related

[Q] Mount SDCard in console

Hi.. how i can mount/remount sdcard in console? because something is wrong.. in every roms when i goes to sdcard in setting its show unavailable.. once time ago i wrote something in console as remount and it was okey.. but i forgot it how i can do that.. i tried many combination of command mount but nothing. maybe i can find in google with keyword "mount/remount in linux" can be possible?
but through astro i can explore sdcard.. its strange..
please help. And thanks for answers
Code:
mount /dev/block/mmcblk0pN /sdcard -t FSTYPE
N is number of partition (usually 1) and FSTYPE is vfat or ext2 (usually vfat)
Google is a good help so please use it!
i look on mount and sdcard is mounted.. but still i cannot explore it with anything except astro.. i think maybe is problem in kernel.. i have last kernel version... working sdcard full for everyone? maybe is problem only in my phone.. or its global error
Sd card works in latest kernel, probably is your problem, reformat the card.
Try this:
vdc volume mount /sdcard

/sdcard points to internal memory. How to change that?

Currently, the /sdcard folder is pointing to the phone memory. My external card is mounted as /sdcard/external_sd
The problem with the above structure is that all the stuff that should be stored in the actual sdcard is stored in the memory.
I am sure there is a way to mount the external sdcard as /sdcard in the system through shell commands. Can someone help me with this?
Thanks.
1. I believe you need root in order to manipulate mounting points...
2. Be careful manipulating mount points as this may break aps looking for data in the /sdcard mount point...
YMMV
Chinook Pilot said:
1. I believe you need root in order to manipulate mounting points...
2. Be careful manipulating mount points as this may break aps looking for data in the /sdcard mount point...
YMMV
Click to expand...
Click to collapse
1. I am rooted.
2. Well, I want to change the /sdcard mountpoint to the actual sdcard. I don't think this should break anything. I am not sure about the syntax, that is why I am asking.
Mount
Here's a link to the man pages for the mount command. I'm not running a stock kernel so my mount points and fstab aren't generic to the stock e4gt... Basically you need to umount both and the mount where you wish them to point... Good luck...
http://linux.die.net/man/8/mount

[Howto] mount any directories from extSdCard to under /sdcard/

So I found a million threads asking about why they can't ln -s or mount the /mnt/extSdCard to /mnt/sdcard or various forms of that. The motivation here is to allow certain apps that can't get about /sdcard/ to be able to see the additional 64GB of SDHC.
What helped was this realization that the android mount command supports bind and one of a few dozen other threads, mostly this one:
http://forum.xda-developers.com/showthread.php?t=1825494
So it appears there are a half dozen ways to make mounts, from using /dev/block/vold/179:97 to using the vold.fstab which mentions a serial or parallel sdcard scheme, which they chose parallel, to all these init.rc monitoring scripts that have to unmount on USB mode, and crazy stuff and a million Directory Bind apps, and int2SD binder / linker apps. It appears this app might do what I am suggesting but I don't think /emmc/ works anymore and I haven't looked into the .apk.
Ok....
1) ODIN over a root injected stock ROM, or otherwise get root.
2) (A) Get yourself any Terminal program like Terminal Emulator and if you are smart you will also get Hacker's Keyboard.
or
2) (B) From any of the programs that will run scripts, you can just make a script.
3)
Code:
$ su -
# mkdir /mnt/sdcard/external
# mount -o bind /mnt/extSdCard /mnt/sdcard/external
Now you can name it whatever you want but since the home is /sdcard/ it has to be under that.
Or, instead of mounting the whole thing, just mount Movies and Music directory
Code:
# mkdir /mnt/sdcard/Music/extMusic
# mount -o bind /mnt/extSdCard/Music /mnt/sdcard/Music/extMusic
Etc.
Now for those wanting to make a script or app to sell for $1.99... There may be real problems depending on where a backup program chooses to backup and it could be recursive.
And just FYI, this ends up inheriting all the same properties from the extSdCard mount params,
ie. /dev/block/vold/179:97 /mnt/sdcard/Music/extMusic vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1023,fmask=0002,dmask=0002,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
Any mounted directory all look identical in mount and the vold must map them out.
Anyways you can write a simple script and hopefully you are mindful of any backups you do if you save backups to the external sdcard and you mount the entire thing. The safest way would be to mount one directory to transfer files or only mount the large media.
It also means you could copy everything from /sdcard/Music to the external and then mount /sdcard/Music to be a directory on the external card. You could remove the ext SDHC and copy files that way and have everything in one place and not worry about wiping it out.
However, I have benchmarked the internal SD appears to be faster on bandwidth benchmarks versus an external Class 10/UHS. On the stock rom the internal is also fuse versus fat32 for the external SDHC (or exFAT for a SDXC card). There is also something in the SD2.0 spec about the 2nd SD only one can have a higher clock bandwidth.
Types in step 3 exactly. But nothing happened
Sent from my SGH-T999 using xda app-developers app
fateownzyou3 said:
Types in step 3 exactly. But nothing happened
Click to expand...
Click to collapse
Did you get an error? There is no output of mount unless there is an error.. Did you look in a file browser to see if that folder is now mounted? This only works until reboot, until someone makes an app or script.
Hi,
@joederp thank you very much ! Your tip in so usefull to me with my galaxy note on CM10 ParanoidAndroid ROM.
The only thing I try now to get work is : automaticaly run the script at phone boot. I'm pretty sure I can get it with Tasker, but did not find the trick.
Just use the directory bind app... It works fine on my galaxy tab 2 7.0
Sent from my SGH-T999 using xda premium
Directory bind is a whole different thing that uses CPU and monitors the system and does who knows what.
You can just use any scripting program or I think edit init.rc and add the extra mount commands. copy init.rc to a .bak and edit it.
Thank to all of you !
I found something more appropriate to my needs in this thread : http://forum.xda-developers.com/showthread.php?t=1593615
Anyway thanks

[MOD][Howto] Move folders from internal to external sd card

Here is the script i use to mount folders from my external sd card over folders on the internal one. This makes it possible to transfer the most space consuming files off the internal memory, so you have more space for installing other applications.
this method requires some basic linux skills, if you dont know how to use the linux command line, you better try the foldermount app. as always, use this method on your own risk.
this works with the mount --bind command, nothing new, similar scripts are documented for the galaxy s3, galaxy tab and also used by the foldermount app. one advantage over the foldermount app is, that this script is launched by init.d very early in the boot process, so no app is started at the time of mounting (not finding the files they expect).
1. you need a kernel with init.d support. tested with adam 1.3.2 and perseus alpha1. (alpha0 did not work for me).
2. get a root command promt on your phone, i recommend adb shell, a local terminal emulator will work too.
3. you may need to type "su" in the console to get a root shell
4. create the init directory by typing "mkdir /etc/init.d" and "chmod 777 /etc/init.d"
5. create the file "/etc/init.d/02mountbind" by using your favorite text editor. you may also create it on sdcard first and then copy it over. make sure to do a "chmod 777 /etc/init.d/02mountbind" on it.
6. the content of the script depends on your requirements. also, it does not move any files, you have to do that yourself. I recommend to test with the first mount -o bind test line. then comment in the other two lines after you have moved the files over to your external sdcard.
Code:
#!/system/bin/sh
echo "started mount script" >/data/local/tmp/init.d_log.txt
#start the volume manager
vold
#mount the external sd card, its not there at boot time
mount -t vfat -o umask=0000,uid=1000,gid=1023 /dev/block/vold/179\:9 /storage/extSdCard/ 2>&1 >> /data/local/tmp/init.d_log.txt
#this is a test, you can use it to confirm everything is working before you start to move files. if all is fine, you can write files to the folder "test" on your internal sdcard and see the changes on the external one.
mount -o bind /storage/extSdCard/test/ /data/media/0/test 2>&1 >> /data/local/tmp/init.d_log.txt
#mount the Android directory of the extSdCart to the internal one. Move all files from your internal sdcard to the external one first
#mount -o bind /storage/extSdCard/Android/ /data/media/0/Android 2>&1 >> /data/local/tmp/init.d_log.txt
#also mount the obb directory. its not on the "internal sdcard" but also on your internal storage. it holts the most data of games like gta3, max payne and so on.
#mount -o bind /storage/extSdCard/Android/obb /data/media/obb/ 2>&1 >> /data/local/tmp/init.d_log.txt
echo "done mount script" >> /data/local/tmp/init.d_log.txt
after placing the script and making it chmod 777, try to reboot and see if it works. if not, check the file /data/local/tmp/init.d_log.txt for log informations.
i have some games installed, had a full internal memory and were able to free up 6Gb space on my using this method.
Feedback welcome.
raw235 said:
Here is the script i use to mount folders from my external sd card over folders on the internal one. This makes it possible to transfer the most space consuming files off the internal memory, so you have more space for installing other applications.
this method requires some basic linux skills, if you dont know how to use the linux command line, you better try the foldermount app. as always, use this method on your own risk.
this works with the mount --bind command, nothing new, similar scripts are documented for the galaxy s3, galaxy tab and also used by the foldermount app. one advantage over the foldermount app is, that this script is launched by init.d very early in the boot process, so no app is started at the time of mounting (not finding the files they expect).
1. you need a kernel with init.d support. adam kernel has it, others may have it too.
2. get a root command promt on your phone, i recommend adb shell, a local terminal emulator will work too.
3. you may need to type "su" in the console to get a root shell
4. create the init directory by typing "mkdir /etc/init.d" and "chmod 777 /etc/init.d"
5. create the file "/etc/init.d/02mountbind" by using your favorite text editor. you may also create it on sdcard first and then copy it over. make sure to do a "chmod 777 /etc/init.d/02mountbind" on it.
6. the content of the script depends on your requirements. also, it does not move any files, you have to do that yourself. I recommend to test with the first mount -o bind test line. then comment in the other two lines after you have moved the files over to your external sdcard.
Code:
#!/system/bin/sh
echo "started mount script" >/data/local/tmp/init.d_log.txt
#start the volume manager
vold
#mount the external sd card, its not there at boot time
mount -t vfat -o umask=0000,uid=1000,gid=1023 /dev/block/vold/179\:9 /storage/extSdCard/ 2>&1 >> /data/local/tmp/init.d_log.txt
#this is a test, you can use it to confirm everything is working before you start to move files. if all is fine, you can write files to the folder "test" on your internal sdcard and see the changes on the external one.
mount -o bind /storage/extSdCard/test/ /data/media/0/test 2>&1 >> /data/local/tmp/init.d_log.txt
#mount the Android directory of the extSdCart to the internal one. Move all files from your internal sdcard to the external one first
#mount -o bind /storage/extSdCard/Android/ /data/media/0/Android 2>&1 >> /data/local/tmp/init.d_log.txt
#also mount the obb directory. its not on the "internal sdcard" but also on your internal storage. it holts the most data of games like gta3, max payne and so on.
#mount -o bind /storage/extSdCard/Android/obb /data/media/obb/ 2>&1 >> /data/local/tmp/init.d_log.txt
echo "done mount script" >> /data/local/tmp/init.d_log.txt
after placing the script and making it chmod 777, try to reboot and see if it works. if not, check the file /data/local/tmp/init.d_log.txt for log informations.
i have some games installed, had a full internal memory and were able to free up 6Gb space on my using this method.
Feedback welcome.
Click to expand...
Click to collapse
can you plz make a app for this coz its very difficult for ameture like Me.Thanks
@palash_6670 Why dont you use the foldermount app from the market
grgsiocl said:
@palash_6670 Why dont you use the foldermount app from the market
Click to expand...
Click to collapse
I use it
It is amazing ^_^
Sent from my GT-I9500 using Tapatalk 4 Beta
palash_6670 said:
can you plz make a app for this coz its very difficult for ameture like Me.Thanks
Click to expand...
Click to collapse
bhai, use FOlderMount (https://play.google.com/store/apps/details?id=com.devasque.fmount) ! awesome application !
greatricky said:
bhai, use FOlderMount (https://play.google.com/store/apps/details?id=com.devasque.fmount) ! awesome application !
Click to expand...
Click to collapse
Yeah Bro Using it Thanks for the suggestion
Guys, wouldnt be easier to simply edit the root\etc\vold.fstab and change the montpoints of internal memory and external microsd?
Pistolaobr said:
Guys, wouldnt be easier to simply edit the root\etc\vold.fstab and change the montpoints of internal memory and external microsd?
Click to expand...
Click to collapse
i have tried that, there is no mount point for the internal one in vold.fstab. instead i have modified the init.rc config (by repacking the kernel) to mount the external one in place of the internal one and ignore the external moint point, but that caused the camera application to hang (i think it checks for both sdcards). also, my script does not only mount the large Android folder from one sd to the other, it is also able to mount the /data/media/obb folder, which neither on the internal nor on the external sdcard, to the external sdcard. simple mountpointswapping would'nt make this possibe. that obb folder was 3,5GB large for me, containing the most data of my games.
palash_6670 said:
Yeah Bro Using it Thanks for the suggestion
Click to expand...
Click to collapse
How much space did you save doing that?
drziddo said:
How much space did you save doing that?
Click to expand...
Click to collapse
u can put the game file on sd card[OBB,game files] and mount it.it will work like as a Mobile memory. [sorry for the english]
Hi
Is it possible to find a way through CWM Flash ?
azoojeddah said:
Hi
Is it possible to find a way through CWM Flash ?
Click to expand...
Click to collapse
Probably yes, but it woulb be one for each cwm custom rom or for each custom kernel.
xperia z
pls folder mount doesnt work with xperia z any suggestions pls???
johnemone said:
pls folder mount doesnt work with xperia z any suggestions pls???
Click to expand...
Click to collapse
What does it say?
mw86 said:
What does it say?
Click to expand...
Click to collapse
it shows me d green pin but wen I try to start d game it doesn't start
raw235 said:
Here is the script i use to mount folders from my external sd card over folders on the internal one. This makes it possible to transfer the most space consuming files off the internal memory, so you have more space for installing other applications.
this method requires some basic linux skills, if you dont know how to use the linux command line, you better try the foldermount app. as always, use this method on your own risk.
Click to expand...
Click to collapse
Nice work...Keep it up
Click to expand...
Click to collapse
Looks Greattttt.....Keep It Up :good:
is this will work on galaxy s3?

How to put /data on external SD

WORD OF WARNING: if you do this, wiping /data from recovery will not actually wipe data. AND if you install a new ROM, via clean or dirty flash, chances are your large /data partition will go all screwy on you. It did for me. If I flashed anything, it tends to cause boot loops or hangs at the boot animation.
If you are dirty flashing anything, I would first get as much off of the large /data as you can to get it to 2 GB or less, then drop it on top of your 2 GB /data partition, then dirty flash, let everything come back up and get stable then repeat these steps starting at step 2 to blow away your large /data and then mirror your 2 GB /data to your large /data.
The problems I had could be related to xposed, but I am not 100% certain on this. It is my best guess from looking at my logcat (doesn't actually indicate a crash in there, but has a lot of stuff related to xposed).
These steps are more for the non-flashaholics amung us OR people who flash new stuff but roll back to nandroid. Once you pop the larger /data onto any ROM, your nandroid will likely not play nice with it anymore as your larger /data is not restored from a nandroid.
And the normal "warranty is now void" and "if things break, it isn't my fault" disclamer stuff too. But I'm running this right now and liking it (except when I go to jump to KK it may not be happy with me... gonna need to do some testing to nandroids work properly AND so I can flash ROMs without blowing everything up... thinking it is just the dalvik that is unhappy, but I am uncertain at this time)
I was having issues with my /data partition getting full on me after getting new ROMs set up. This was irritating me and I came to the conclusion that 2 GB was just not enough space for some of the larger apps out there. So I went ahead and started investigating and testing how to get /data onto the external SD card.
2 complications arise:
1) it needs to be in ext4 format to preserve permissions
2) it needs to be swapped post boot AFTER the sd card is mounted (potentially, I have not fully tested this).
So this becomes a multi step process. What you need:
1) an external SD card that is at least 2 GB in size if not larger (I recommend larger simply because what is the point of having it on external storage if you aren't gaining any extra space)
2) a SGH-T989D (I do not have an SGH-T989 to test it with BUT I am confident it will work with that one too)
3) some partitioning software on your PC (I recommend EaseUS or AOMEI, but use whatever you are comforatble with)
4) latest version of busybox installed on your phone
So, the steps to do this:
1) partition your external SD card into at least 2 partitions, where your second partition will be used for /data. The first partition automatically mounts to /storage/sdcard1, but partition 2 will NOT auto-mount. You do not need to format this if you do not want to. This is up to you how you do it.
2) Run the following commands from either adb shell OR android terminal:
su
mke2fs /dev/block/mmcblk1p2
mkdir /storage/sdcard1/PARTITION2
mount -t ext4 /dev/block/mmcblk1p2 /storage/sdcard1/PARTITION2
rsync -HpogEvrl /data/* /storage/sdcard1/PARTITION2
busybox umount -l /storage/sdcard1/PARTITION2
mount -o remount,errors=continue /data
busybox umount -l /data && mount -t ext4 -o rw,seclabel,errors=continue,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc /dev/block/mmcblk1p2 /data
chown system:system /data
restorecon /data
brief explaination of the above commands:
su - switch user to root
mke2fs - format the block device as ext4
mkdir - make directory
mount -t ext4 - mount a block device of type ext4 from /dev/block/mmcblk1p2 to /storage/sdcard1/PARTITION2
rsync -HpogEvrl - copy files from /data/* to /storage/sdcard1/PARTITION2 preserving all attributes (including owner and group)
busybox umount -l - use the busybox version of umount to do a lazy unmount of /storage/sdcard1/PARTITION2. this will unmount it even if files are locking it
mount -o remount,errors=continue /data - remounts the data partition telling it to continue instead of kernel panic if there is any errors reading or writing to that mount point
and the next command is actually 2:
busybox umount -l /data && mount -t ext4 -o rw,seclabel,errors=continue,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc /dev/block/mmcblk1p2 /data
this does a lazy unmount of /data and then mounts /dev/block/mmcblk1p2 to /data with the appropriate parameters for the /data parameter
chown system:system /data - This gives system ownership of /data instead of root as is originally done
restorecon /data - we do this just in case the userdata partition has been reset.
3) OPTIONAL delete the directory /storage/sdcard1/PARTITION2. This is just cleanup, it is not neccessary to do.
When you reboot your phone, your /data directory will remount to the 2 GB partition as it did originally. To remount it to your newly created /data partition, run the following 2 commands:
su
busybox umount -l /data && mount -t ext4 -o rw,seclabel,errors=continue,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc /dev/block/mmcblk1p2 /data
Now, you can make this into a nice and easy startup script by following these simple steps from adb shell or android terminal (NOTE this assumes that your ROM supports userinit.d and init.d):
su
cd /data/local/userinit.d
echo "#!/system/bin/bash" > dataswap
echo "if [ -e \"/dev/block/mmcblk1p2\" ]" >>dataswap
echo "then" >> dataswap
echo "busybox umount -l /data && mount -t ext4 -o rw,seclabel,errors=continue,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc /dev/block/mmcblk1p2 /data" >> dataswap
echo "chown system:system /data" >> dataswap
echo "restorecon /data" >> dataswap
echo "fi" >>dataswap
chown root:shell dataswap
chmod 777 dataswap
and now when you reboot your phone you will have your external SD cards partition 2 as your /data directory.
If your phone has init.d support, look in your /system/etc/init.d folder for a script named "90userinit". If it is not there, you will need to either make it and have it run userinit.d OR change the line:
cd /data/local/userinit.d
to
cd /system/etc/init.d
mount -o remount,rw /system
now for the warning stuff:
1) I strongly recommend that you do NOT put this into your /data/local/userinit.d folder until you are 110% certain that it worked on your device with your ROM. The reason for this is if it fails and you don't have it in that folder, simply reboot and your phone is back to using /data from partition 25 on your internal memory
2) I strongly recommend you do a nandroid before you begin. That way in the very slim chance that something goes horridly wrong, you can recover
3) I strongly recommend you back up your external SD card before you begin resizing your partitions. Resizing partitions may result in data loss.
4)I take no responsibility for any data loss
5) I have ONLY tested this on a SGH-T989D running HellyBean (Android 4.3). I cannot make any comments on other ROMS, but as long as the ROM has busybox, root, and init.d support, this should work.
6) If you get ANY ERRORS from ANY of the above commands, stop everything and either post in this thread or start over. I have done this twice on my phone to make sure that the steps are as solid as I know how to make them. The only thing I haven't fully tested is putting it into a startup script.
One thing I notice, sometimes when you unmount and remount /data, any data changes in your currently running apps (ie you get a text message while doing this or you start a game up while /data is being sync'ed) may cause odd data issues when the two swap and may cause your phone to jump back to the boot animation. If this occurs, try waiting approximately 1 minute OR until adb shell drops out; whatever comes first. At that point, something has likely gone sour. Reboot your phone and things will be back how they were prior to step 2 (step 1 is permanent until you change that).
Questions, comments, suggestions? Please leave them in the thread, not in PM. If I get any PM's about this thread, I'll do my best to answer, but I may end up posting your PM in this thread to help others.
EDIT: cleaned up the instructions a little and added in some recommended steps (the chown and restorecon) and removed the waiting to mount /data as that just makes things unhappy long term.
EDIT: added error handling in case mmcblk1p2 does not exist to the startup script. If it does not exist, it will now NOT swap the partitions. So as a failsafe, if your phone gets stuck at the boot animation, you can power it down, remove the SD card and power it back up to boot with your default /data partition. This should not need to be done, but there is a chance that your SD card could die or your new /data partition get corrupted, this will allow you to recover safely and will likely only require you to re-create your data partition and NOT have to re-do your whole ROM due to something going bad on the big /data.
Dang...found a bug: it looks like if you leave it for a few days or reboot our something(have not narrowed it down yet) some apps stop working... investigating it and should have a solution sometime tonight... sorry to all those who have tried this... if you have not done much, I'd suggest switching back to normal /data until I get the bug sorted out. My best guess is that reboot doesn't unmount the partition cleanly but I'm not positive...
bmg002 said:
I was having issues with my /data partition getting full on me after getting new ROMs set up. This was irritating me and I came to the conclusion that 2 GB was just not enough space for some of the larger apps out there. So I went ahead and started investigating and testing how to get /data onto the external SD card.
2 complications arise:
1) it needs to be in ext4 format to preserve permissions
2) it needs to be swapped post boot AFTER the sd card is mounted (potentially, I have not fully tested this).
So this becomes a multi step process. What you need:
1) an external SD card that is at least 2 GB in size if not larger (I recommend larger simply because what is the point of having it on external storage if you aren't gaining any extra space)
2) a SGH-T989D (I do not have an SGH-T989 to test it with BUT I am confident it will work with that one too)
3) some partitioning software on your PC (I recommend EaseUS or AOMEI, but use whatever you are comforatble with)
4) latest version of busybox installed on your phone
So, the steps to do this:
1) partition your external SD card into at least 2 partitions, where your second partition will be used for /data. The first partition automatically mounts to /storage/sdcard1, but partition 2 will NOT auto-mount. You do not need to format this if you do not want to. This is up to you how you do it.
2) Run the following commands from either adb shell OR android terminal:
su
mke2fs /dev/block/mmcblk1p2
mkdir /storage/sdcard1/PARTITION2
mount -t ext4 /dev/block/mmcblk1p2 /storage/sdcard1/PARTITION2
rsync -HpogEvrl /data/* /storage/sdcard1/PARTITION2
busybox umount -l /storage/sdcard1/PARTITION2
mount -o remount,errors=continue /data
busybox umount -l /data && mount -t ext4 -o rw,seclabel,errors=continue,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc /dev/block/mmcblk1p2 /data
brief explaination of the above commands:
su - switch user to root
mke2fs - format the block device as ext4
mkdir - make directory
mount -t ext4 - mount a block device of type ext4 from /dev/block/mmcblk1p2 to /storage/sdcard1/PARTITION2
rsync -HpogEvrl - copy files from /data/* to /storage/sdcard1/PARTITION2 preserving all attributes (including owner and group)
busybox umount -l - use the busybox version of umount to do a lazy unmount of /storage/sdcard1/PARTITION2. this will unmount it even if files are locking it
mount -o remount,errors=continue /data - remounts the data partition telling it to continue instead of kernel panic if there is any errors reading or writing to that mount point
and the last command is actually 2:
busybox umount -l /data && mount -t ext4 -o rw,seclabel,errors=continue,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc /dev/block/mmcblk1p2 /data
this does a lazy unmount of /data and then mounts /dev/block/mmcblk1p2 to /data with the appropriate parameters for the /data parameter
3) OPTIONAL delete the directory /storage/sdcard1/PARTITION2. This is just cleanup, it is not neccessary to do.
When you reboot your phone, your /data directory will remount to the 2 GB partition as it did originally. To remount it to your newly created /data partition, run the following 2 commands:
su
busybox umount -l /data && mount -t ext4 -o rw,seclabel,errors=continue,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc /dev/block/mmcblk1p2 /data
Now, you can make this into a nice and easy startup script by following these simple steps from adb shell or android terminal (NOTE this assumes that your ROM supports userinit.d and init.d):
su
cd /data/local/userinit.d
echo "#/sys/bin/bash" > dataswap.sh
echo "while [ \`mount | grep -c sdcard\` -lt 3 ]" >> dataswap.sh
echo "do" >> dataswap.sh
echo "sleep 10" >> dataswap.sh
echo "done" >> dataswap.sh
echo "busybox umount -l /data && mount -t ext4 -o rw,seclabel,errors=continue,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc /dev/block/mmcblk1p2 /data" >> dataswap.sh
chown root:shell dataswap.sh
chmod 777 dataswap.sh
and now when you reboot your phone you will have your external SD cards partition 2 as your /data directory.
If your phone has init.d support, look in your /system/etc/init.d folder for a script named "90userinit". If it is not there, you will need to either make it and have it run userinit.d OR change the line:
cd /data/local/userinit.d
to
cd /system/etc/init.d
mount -o remount,rw /system
now for the warning stuff:
1) I strongly recommend that you do NOT put this into your /data/local/userinit.d folder until you are 110% certain that it worked on your device with your ROM. The reason for this is if it fails and you don't have it in that folder, simply reboot and your phone is back to using /data from partition 25 on your internal memory
2) I strongly recommend you do a nandroid before you begin. That way in the very slim chance that something goes horridly wrong, you can recover
3) I strongly recommend you back up your external SD card before you begin resizing your partitions. Resizing partitions may result in data loss.
4)I take no responsibility for any data loss
5) I have ONLY tested this on a SGH-T989D running HellyBean (Android 4.3). I cannot make any comments on other ROMS, but as long as the ROM has busybox, root, and init.d support, this should work.
6) If you get ANY ERRORS from ANY of the above commands, stop everything and either post in this thread or start over. I have done this twice on my phone to make sure that the steps are as solid as I know how to make them. The only thing I haven't fully tested is putting it into a startup script.
One thing I notice, sometimes when you unmount and remount /data, any data changes in your currently running apps (ie you get a text message while doing this or you start a game up while /data is being sync'ed) may cause odd data issues when the two swap and may cause your phone to jump back to the boot animation. If this occurs, try waiting approximately 1 minute OR until adb shell drops out; whatever comes first. At that point, something has likely gone sour. Reboot your phone and things will be back how they were prior to step 2 (step 1 is permanent until you change that).
Questions, comments, suggestions? Please leave them in the thread, not in PM. If I get any PM's about this thread, I'll do my best to answer, but I may end up posting your PM in this thread to help others.
Click to expand...
Click to collapse
So found a solution to crashing apps . Load up the play store and update your apps. Worked for me anyways.
Now to fix a potential mounting bug in the op, put any scripts on a different ext4 position such as/system/xbin or/system/etc/init.d.
I'll keep you posted if I find other bugs.
Sent from my SAMSUNG-SGH-T989 using xda app-developers app
Bleh new bug:
When you unplug it from a pc, it gets confused and you get io errors which cause it to crash back to the boot animation and get stuck there... too tired to debug out tonight but I'll poke at it tomorrow... thinking I may need to build a kernel module for this... or a custom kernel
Sent from my SAMSUNG-SGH-T989 using xda app-developers app
So the unplugging issue seems quite intermittent and I am unable to get consistent results with it. So I am not sure if it is a bug or not. I updated the OP to have error handling so you can pull your SD card out to mount the 2 GB /data that your phone normally does instead of your big one in the event that something goes wrong.
Hrm... so my testing and further development with this has taken a temporary pause due to my SD card dying on me. Stupid SD card... haven't even had it a year. Hoping I can find the reciept. But once I get it replaced, I'll be jumping in on this some more. I have a few cool ideas that we can do by moving partitions to external storage...
What's the deal with cause this would so help with games but is it possible to maybe if possible extend the internal storage
snt? from? sumthiN 4.4+ ?via a ?T989
hatememarkz said:
What's the deal with cause this would so help with games but is it possible to maybe if possible extend the internal storage
snt? from? sumthiN 4.4+ ?via a ?T989
Click to expand...
Click to collapse
From my testing it seems to work but puts a heavy load the sd card. And if your sd card fails you will lose some data.
I have not tested this on KitKat yet but that is my plan soon.
Sent from my SM-T310 using xda app-developers app

Categories

Resources