After 1000 forum pages later I setup a small script under init.d for the storage swap under 4.2.2 which works more or less:
sleep 3
mount -o remount,rw /
mount -t vfat -o umask=0000 /dev/block/vold/179:97 /mnt/shell/emulated
mount -o bind /data/media/0 /storage/sdcard1
chown system /data/media/0
chgrp sdcard_rw /data/media/0
chmod 0075 /data/media/0
mount -o remount, ro /
But now I do not know how to progress further,it looks good under x-plorer and Root explorer (storage swapped), but under the normal menue the primary storage is shown as the internal one. (However, programme files are installed on the ext. SD card correctly) Anyone having a good idea?
For those who are interested in giving it a try (this is at your own risk!), until it is completely fixed and there is a more comprehensive description, it is more for people with some background, at least:
DO A BACKUP FIRST! (e.g. with TWRP, if you end up in a boot loop, you can at least go back to the latest running system)
1) create a script, e.g. with SMmanager ads under /etc/init.d and copy text from above into it and save
2) activate boot, su and executable for the script
3) save file/script
4) reboot, swap (of the mounts) will be done
5) do a manual transfer, of the files and folders from one storage to the other.
That means that you should transfer at least the files under /data/media/0 to mnt/shell/emulated/0 (I used root explorer), same for legacy and obb.
Note that under 4.2.2 the obb folder under android has been moved due to the multiuser capability under the same level as the user folders (0, 10, 11 e.g. if you have three users), so if you have (after the transfer from /data/media/0) files under mnt/shell/emulated/0/android/obb transfer the files to avoid a redownload and waste of storage to mnt/shell/emulated/obb e.g. using roor explorer.
After that you will see the external SDcard folder mnt/shell/emulated/0 as internal storage (using an explorer, works also if you connected to windows via USB, but, again, not in the internal menue)
and /data/media/0 as external storage.
TWRP folder can/should be found under mnt/shell/emulated.
6) Keep a copy of the script on your ext. sdcard, after an update the file will be lost and you can copy it back to init.d (e.g. using root explorer)
7) In case you want to revert to normal mount delete script from init.d and reboot (and copy back files manually)
That is in principle all and again it works, but not flawless (indication under menue, rights of files from internal sd under multiuser), so I would appreciate some constructive comments to improve it. Again, I am at the end of my (limited) knowledge...
As it works, it seems to be primary an indication issue...
Mount is delivering the following (pre swap):
[email protected]:/ $ mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0 devpts /dev/pts devpts rw,relatime,mode=600 0 0 none /dev/cpuctl cgroup rw,relatime,cpu 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,relatime 0 0 debugfs /sys/kernel/debug debugfs rw,relatime 0 0 none /acct cgroup rw,relatime,cpuacct 0 0 tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0 tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/dm-0 /mnt/asec/com.DefiantDev.SkiSafari-1 ext4 ro,dirsync,nosuid,nodev,noatime,user_xattr,acl,bar rier=1 0 0 tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0 tmpfs /mnt/fuse tmpfs rw,relatime,mode=775,gid=1000 0 0
/dev/block/mmcblk0p24 /tombstones ext4 rw,nosuid,nodev,relatime,user_xattr,acl,barrier=1, data=ordered 0 0
/dev/block/mmcblk0p1 /firmware vfat ro,relatime,fmask=0000,dmask=0022,codepage=cp437,i ocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
/dev/block/mmcblk0p20 /system ext4 ro,relatime,user_xattr,acl,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p22 /cache ext4 rw,nosuid,nodev,relatime,user_xattr,acl,barrier=1, data=ordered 0 0
/dev/block/mmcblk0p23 /tmpdata ext4 rw,nosuid,nodev,noatime,user_xattr,acl,barrier=1,d ata=ordered,noauto_da_alloc 0 0
/dev/block/mmcblk0p21 /persist ext4 rw,nosuid,nodev,noatime,user_xattr,acl,barrier=1,d ata=ordered 0 0
/dev/block/mmcblk0p27 /data ext4 rw,nosuid,nodev,noatime,user_xattr,acl,barrier=1,d ata=ordered,noauto_da_alloc 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=102 3,default_permissions,allow_other 0 0
tmpfs /storage/emulated tmpfs rw,nosuid,nodev,relatime,mode=050,gid=1028 0 0
/dev/block/vold/179:97 /storage/sdcard1 vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,g id=1015,fmask=0702,dmask=0702,allow_utime=0020,cod epage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/fuse /storage/emulated/0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=102 3,default_permissions,allow_other 0 0
/dev/fuse /storage/emulated/0/Android/obb fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=102 3,default_permissions,allow_other 0 0
/dev/fuse /storage/emulated/legacy fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=102 3,default_permissions,allow_other 0 0
/dev/fuse /storage/emulated/legacy/Android/obb fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=102 3,default_permissions,allow_other 0 0
[email protected]:/ $
Mount post-swap delivers in principle (after the last changes in the script some right(s) should be different):
[email protected]:/ $ mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/secure tmpfs rw,relatime,mode=700 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
/dev/block/dm-0 /mnt/asec/com.keramidas.TitaniumBackupPro-1 ext4 ro,dirsync,nosuid,nodev,noatime,user_xattr,acl,barrier=1 0 0
/dev/block/dm-1 /mnt/asec/com.zeptolab.ctrexperiments.google.paid-1 ext4 ro,dirsync,nosuid,nodev,noatime,user_xattr,acl,barrier=1 0 0
/dev/block/dm-2 /mnt/asec/com.twodboy.worldofgoofull-1 ext4 ro,dirsync,nosuid,nodev,noatime,user_xattr,acl,barrier=1 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/fuse tmpfs rw,relatime,mode=775,gid=1000 0 0
/dev/block/mmcblk0p24 /tombstones ext4 rw,nosuid,nodev,relatime,user_xattr,acl,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p1 /firmware vfat ro,relatime,fmask=0000,dmask=0022,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
/dev/block/mmcblk0p20 /system ext4 ro,relatime,user_xattr,acl,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p22 /cache ext4 rw,nosuid,nodev,relatime,user_xattr,acl,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p23 /tmpdata ext4 rw,nosuid,nodev,noatime,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc 0 0
/dev/block/mmcblk0p21 /persist ext4 rw,nosuid,nodev,noatime,user_xattr,acl,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p27 /data ext4 rw,nosuid,nodev,noatime,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/block/vold/179:97 /mnt/shell/emulated vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
tmpfs /storage/emulated tmpfs rw,nosuid,nodev,relatime,mode=050,gid=1028 0 0
/dev/block/mmcblk0p27 /storage/sdcard1 ext4 rw,nosuid,nodev,noatime,user_xattr,acl,barrier=1,data=ordered,noauto_da_alloc 0 0
/dev/block/vold/179:97 /storage/emulated/0 vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
/dev/block/vold/179:97 /storage/emulated/0/Android/obb vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
/dev/block/vold/179:97 /storage/emulated/legacy vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
/dev/block/vold/179:97 /storage/emulated/legacy/Android/obb vfat rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=cp437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro 0 0
[email protected]:/ $
Update 13.04
What does the script do?
-mounts your user data to the external SDcard
-ext. SDcard will be used as your internal storage
-internal storage will show up as external storage (sdcard1) can be used, too
What does not work?
-storage swap is not correctly displayed under the system menue, -this seems to be merely an indication issue
What you need before you can start?
-Root
-TWRP (or equivalent)
-Root explorer (or equivalent)
-SMmanager ads (or equivalent
How to do it?
1) DO A BACKUP OF THE SYSTEM FIRST! (e.g. with TWRP, if you end up in a boot loop, you can at least go back to the latest running system)
2) copy folder "emulated" from /mnt/shell to your ext. SDcard, /storage/sdcard1 (use root explorer),- you will delete the redundant data from your internal storage later after the reboot
3) create a script, e.g. with SMmanager ads under /etc/init.d and copy text from above into it and save:
sleep 5
mount -o remount,rw /
mkdir /data/newext_sd
mkdir /data/newext_sd/myfolder
mount -t vfat -o umask=0000 /dev/block/vold/179:97 /mnt/shell
mount -o bind /data/newext_sd /storage/sdcard1
chmod 0075 /data/newext_sd
chown system /data/newext_sd
chgrp sdcard_rw /data/newext_sd
chmod 0777 /data/newext_sd/myfolder
chown root /data/newext_sd/myfolder
chgrp root /data/newext_sd/myfolder
mount -o remount,ro /
4) activate boot, su and executable for the script
5) save script, again
6) reboot, swap (of the mounts) will be done
7) if you get a message that system process do not run properly, press wait and it should not reappear (you may also delete the caches, again, with TWRP)
8) delete redundant data, all folders under /data/media, use root explorer
9) keep a copy of the script on your ext. sdcard, after a rom update the file will be lost and you can copy it back to init.d (e.g. using root explorer) (and reboot)
10) in case you want to revert to normal mount delete script from /etc/init.d and reboot (and copy back files manually)
11) in case you want to reintegrate already existing data from your ext. SDcard to your new user folder structure go with the root launcher to /mnt/shell to access the root of your card and copy any content under your user folder /mnt/shell/emulated/0.
Enjoy...
AS BEFORE, YOU TINKER AT YOUR OWN RISK
Sorry... but storage swapping works in the latest JB's.
Greets Gunnar
No reason to be sorry ,guess where the script came from?
But sharing was the intention.
PS: a few more thanks would have been nice, anyway...
OK, just misunderstood it.
If this is the methodm, which was used in the ROMs of after_silence and zyr3x... it works very well!
Greets Gunnar
Just so I understand:
- please confirm this is already part of the ROM and there is no need to use the scripts...if so, where is the option menu?
- this swaps the internal and external memory so that the internal memory is mapped to the sd card that is removable and the external memory is mapped to the built-in memory which is not removable?
- For the Tmobile Springboard, the built-in memory would be 16GB and for the Mediapad 8GB, I believe. Is that correct?
Advantages and disadvantages, as I see them or understand them.
Advantage:
- I believe this means that the device would see 32GB or 64GB if that was the size of the sd card. Not sure if a 64GB card would work. Why is this an advantage?
Disadvantage:
- That would also mean that you could never remove the sd card. That seems like a disadvantage, but I don't think most people would remove their sd card anyway.
- Sd cards are slower than built-in memory. Is this true?
If anyone wants to add their opinion or comments, please do. If there are any other things to consider, please add them.
Also, don't know how this compares to other methods like Link2SD or those kind of apps.
Thanks all.
mastrv said:
Just so I understand:
- please confirm this is already part of the ROM and there is no need to use the scripts...if so, where is the option menu?
- this swaps the internal and external memory so that the internal memory is mapped to the sd card that is removable and the external memory is mapped to the built-in memory which is not removable?
- For the Tmobile Springboard, the built-in memory would be 16GB and for the Mediapad 8GB, I believe. Is that correct?
Advantages and disadvantages, as I see them or understand them.
Advantage:
- I believe this means that the device would see 32GB or 64GB if that was the size of the sd card. Not sure if a 64GB card would work. Why is this an advantage?
Disadvantage:
- That would also mean that you could never remove the sd card. That seems like a disadvantage, but I don't think most people would remove their sd card anyway.
- Sd cards are slower than built-in memory. Is this true?
If anyone wants to add their opinion or comments, please do. If there are any other things to consider, please add them.
Also, don't know how this compares to other methods like Link2SD or those kind of apps.
Thanks all.
Click to expand...
Click to collapse
Thanks to zyr3x and after_silence the first script is integrated in the last AOPK JB and CM10.1, -so no need for mediapad users with those Roms to pick up the script and we can considered this thread closed
Nevertheless, I do not want to delete it for the time being, as it may be of use for information also for other 4.2.2 Roms, however with different mounting points and adaptation to be made.
Other methods like Link2SD do not work on 4.2.2, unless there is a new development?
As you say, advantage is that you have additional space for games, nav, etc.
Disadvantage is indeed a performance loss and you need the sd card, -at least for certain apps.
@Maja
Please don't delete this Thread!
Before reading this, I thought this possibility for JB comes from the other developers.
But the thank for this point of development goes to you...
And this could be very helpful for other developers, trying to port JB (4.2.x).
I try to answer directly to the questions...
mastrv said:
Just so I understand:
Click to expand...
Click to collapse
- please confirm this is already part of the ROM and there is no need to use the scripts...if so, where is the option menu?
-> Settings > extended (or such) -> Swap internal und external storages
- this swaps the internal and external memory so that the internal memory is mapped to the sd card that is removable and the external memory is mapped to the built-in memory which is not removable?
-> Thats not this simple... for example: the "sdcard" shows to the card as before, so apps don't use internal memory for storing huge data
- For the Tmobile Springboard, the built-in memory would be 16GB and for the Mediapad 8GB, I believe. Is that correct?
-> don't know the Springboard, but yes, MediaPads internal memory is 8GB, 6GB for data
Advantage:
- I believe this means that the device would see 32GB or 64GB if that was the size of the sd card. Not sure if a 64GB card would work. Why is this an advantage?
-> as described before... not that simple at all - and yes, 64GB Fat32 formatted "MobilUltra" from SanDisk works like a charm!
Disadvantage:
- That would also mean that you could never remove the sd card. That seems like a disadvantage, but I don't think most people would remove their sd card anyway.
-> some apps may not work, the system will boot and work normally. This comes from the fact, that "/data" ist still mapped to the internal memory
(this means, that all App-APKs,-Libs,-Data and the Dalvik-Cache stays in internal memory)
- Sd cards are slower than built-in memory. Is this true?
-> not always, but mostly Just put in a fast card and you'll feel no difference
Also, don't know how this compares to other methods like Link2SD or those kind of apps.
-> forget about such things with JB 4.2.x
Hope this helps.
Greets Gunnar
P.S.: mainly it works like it does with ICS... as far as it could
Sounds good. I'll have to get a 64gb card then. FYI, FAT and FAT32 are still the best bets for interoperability. There are utilties that will format drives in FAT32 even though they are larger than 32GB. The 32GB limit was imposed by Microsoft.
FYI, the Tmobile Springboard is a variant of the Mediapad. It does come with 16GB of memory.
Thanks!
In case you have problems with the
[CM10.1][16.08.2013] CM10.1 for Huawei Mediapad 7" [S7-30Xx] [not for Lite or 10 HD]
version of after_silence, means swap does not work, you can revise the script "02extsd" under /etc/init.d to the following by removing the "if-term" as a temporary fix:
#!/system/bin/sh
sleep 3
mount -o remount,rw /
mount -t vfat -o umask=0000 /dev/block/vold/179:97 /mnt/shell/emulated
mount -o bind /data/media/0 /storage/sdcard1
chown system /data/media/0
chgrp sdcard_rw /data/media/0
chmod 0075 /data/media/0
mount -o remount, ro /
Regardless of the "tick" in the system menue, the swap is performed, anyway. (or you wait for an update...)
I assume there is a problem of the used variable of the "if-term", which should not be too difficult to be changed in the code by zyr3x.