[Q] /data/media vs /sdcard - Samsung Galaxy Nexus

What's the difference in how these locations are treated??
I noticed I couldn't delete certain files from /sdcard, but was able to when I went to data/media.
Also a ringtone created doesn't show when browsing sdcard, but it's there when i look in data/media

I believe /sdcard is just a symlink to /data/media, but the OS seems to treat it slightly differently. The file permissions appear different depending on which path is used to browse the files. It could be something related to backwards compatibility with apps that expect a physical SD card formatted for a file system that doesn't support permissions.
Sent from my Galaxy Nexus using Tapatalk

Related

/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

Trying to understand the file structure.

Hi everyone!
I currently am running Glazed ICS 6-16-2012 Rom and I am attempting to understand the file folder structure within my Kindle Fire.
This comes about after playing around with different roms, and after running the TB restore, a few games I play not having the data, requiring me to start over. In an attempt to try and manually recover the data from a twrp recovery I did, I realized didn't have a good idea of the folder structure within Android. Thus I am hoping to get some clarification with the following questions. Thank you in advance for any advice.
1- what folders, if any are required on my sdcard if say I were to start with a fresh rom, with no apps installed other then what is included in the Rom? Using ES File Manager now, it looks to me like an completely unorganized folder ".estrongs, burstlyImageCache, game_cache" etc.
2- Could I copy my TB backup folder off the Kindle Fire then wipe the whole SD card, copy the TB backup back and restore to clean up excess junk folders?
3- Do apps/games put their save data wherever they chose, or is it kept in the program folder in the internal memory, /mnt/sdcard/...?
Thank you again for reading my ramble, cheers.
Silverbrain
1.: Usually Application you installed in SD card partition is under /mnt/sdcard/android/data/<application folder> . now this contains all the information and other data of the games, i think you can back-up this portion aside from using titanium back-up.
For application specific folder, they are usually located in /mnt/sdcard/.<appname> but this folder usually contains caches and can be deleted, since the app will just create them once run again.
2. I do not suggest to wipe your SD partition since technically this is not a standard SD card but partition part of the whole system.
Note: I'm not expert on this, but after playing around with a couple of android devices already, the structure is basically the same.
I think (if it is a unix derivative) the /sdcard is the partition location and /mnt/sdcard is where the system finds what is there. kindle fire does it this way because there is no removable memory card, so it creates an artificial one with a partition. So, for us human types, the locations refer to the same thing. /sdcard is the partition and /mnt/sdcard is where the system mounts it.
Thank you for the replies.
Ixthusdan- I get what you mean regarding the unix and the mnt folder, I technically cannot wipe that is it is just a spot on the internal memory.
vertcam9- I started looking around where you mentioned, and I am starting to understand a little better
The actual name of the partition is "media" and that's how it's identified to the system.
Where the media partition gets mounted is dependent on what gets booted. For example, TWRP will mount the media partition on /sdcard while CM7 will mount it on /mnt/sdcard and create a /sdcard symbolic link that points back to /mnt/sdcard. Most people generically will refer to the media partition as the /sdcard partition because that's what's visible on the system.
I believe the /sdcard thing is an android convention. Because many apps expect the /sdcard to be the primary "large" storage area easily accessible by the user, apps that expect to find large files... music or video files for example... will look there.
Most apps will store settings and small databases in the /data partition. I don't play many games, but someone decided to install Angry Birds on my KF. That game stores most of its files in /data/data/com.rovio.angrybirds. On the other hand, Titanium Backup will put most of its files on /sdcard/TitaniumBackup because it needs more space for backup files and because the /data partition is much more likely to get deleted when you switch ROMs, etc.
For the most part, even if you completely reformat the /sdcard partition, most of your android and app settings will remain intact because that is stored on /data.
kinfauns - Thank you for the extended explanation! I see what I think I need in the /data/data folder

[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

[How-to] Using an ext4 formated SD card.

Update: I've since made a flashable zip that automatically creates a modified sdcard1 binary and extracts an init.d script to handle it all. Will make a thread in a more general location as this could be used on many TouchWiz devices. Link.
Hello everyone,
The mailman brought me a new 64GB microSD card this morning, and I wanted to try formatting it in ext4 instead of exFAT. Both for the heck of it and in case I wanted to give AOSP ROMs a try down the road.
The usual caveats apply.
Required:
init.d support
a mounting script
a mounting updater-script for custom recoveries.
You can get init.d support with the stock kernel on many devices by having the run-parts command launch from a custom install-recovery.sh script. See the following thread for files and a how-to:
[MOD]Term-init & Zip-init: Enable Init.d for Any Phones w/o Need of Custom Kernels!!!
SD card removal:
Should you need to remove the card it can be unmounted and safely removed from the storage settings as usual. Mounting it again requires either a reboot or manually executing the mount command and then activating the card in the storage settings.
Mounting script:
Make sure you have proper line endings, file name (e.g. 95mountsdext4) and permissions set.
Code:
#!/system/bin/sh
# Mount SD Card Ext4 Script
mount -rw -t ext4 /dev/block/mmcblk1p1 /storage/extSdCard
Mounting in CWM/TWRP:
The other piece in this is the attached zip file, which simply runs the appropriate mount command for Clockworkmod Recovery. Unmount as usual. This way you can also store nandroid backups and other update zips on the external as well.
Technical considerations:
The mounting occurs early enough during the boot process that the media scanner and MTP services have no issues with this.
There may be are some permissions related glitches to look out for, but it hasn't been an issue for me so far. (One possible fix would be a recursive chmod/chown added to the mounting script.)
Update: The camera app saves the photos properly to the SD card, but leaves them with improper permissions which prevent subsequent viewing or editing again until you chmod the files. To be continued...
If your init.d support comes from the install-recovery.sh trick, CWM will prompt to delete the script before reboot. Don't.
If the mounting script doesn't run for some reason, or you try to activate the card before having mounted it manually, the phone will give an error and ask if you want to format the card. Don't.
Enjoy,
Darkshado
I have been looking for a way to do this for a long time for numerous reasons (symlinks, >4GB file size, linux-only environment, etc.). I'll be giving this a try very soon.
Thanks for sharing!
EDIT: Just wanted to add that I think it's ridiculous Android doesn't support this natively.
The permissions issues are frustrating. I can take photos and store them on the card, but the umask for JB has been set as 077, in other words, rwx------ permissions, and ownership by the application's user.
I tried different arguments for the mount command to try and force permissions and ownership one way or another with no luck so far. Ironically, an NTFS formatted card might work better in this respect.
A similar mod had been made on the Nexus S and one of the posters resorted to an apk that regularly ran chmod -R 0777 on new files, I tried using it but it just hung there and did nothing on the Note II.
Another possibility would be using FUSE, although I'm not sure how to go about doing this yet.
Also, I pondered the possibility of using UDF instead of ext4, it is a standardized format and just about every major OS out there supports it too...
Any updates? Is it working already or...?
Despite all the good of Android, Google/carriers, whoever, not including ext2/3/4 support natively is just a slap in the face. Good to see someone working to right a wrong that subjugating software has done.
You should NOT be doing this. The Android hardware requirements clearly state that all shared storage directories must be case insensitive and must not have permissions. FAT32 is the only supported filesystem which meets these requirements. Mounting an EXT filesystem directly will break applications.
The newer versions of Android come with an "sdcard" utility which uses a FUSE driver to wrap a native EXT filesystem and exposes a pseudo filesystem which is case insensitive and is without permissions. You should mount the EXT SD card at a different location (/dev/fuse) and use the "sdcard" utility to emulate it at /storage/whatever. You can see the command line syntax of the "sdcard" utility in the source code.
CM10.1 does this automatically. https://github.com/CyanogenMod/android_system_core/tree/cm-10.1/sdcard
KurianOfBorg said:
You should NOT be doing this. The Android hardware requirements clearly state that all shared storage directories must be case insensitive and must not have permissions. FAT32 is the only supported filesystem which meets these requirements. Mounting an EXT filesystem directly will break applications.
The newer versions of Android come with an "sdcard" utility which uses a FUSE driver to wrap a native EXT filesystem and exposes a pseudo filesystem which is case insensitive and is without permissions. You should mount the EXT SD card at a different location (/dev/fuse) and use the "sdcard" utility to emulate it at /storage/whatever. You can see the command line syntax of the "sdcard" utility in the source code.
CM10.1 does this automatically. https://github.com/CyanogenMod/android_system_core/tree/cm-10.1/sdcard
Click to expand...
Click to collapse
Again, Android not natively supporting ext4 is a slap in the face. Usability over technical merit disgusts me.
muqali said:
Again, Android not natively supporting ext4 is a slap in the face. Usability over technical merit disgusts me.
Click to expand...
Click to collapse
It does support EXT4! Officially. All Google ROMs and AOSP can mount EXT4 partitions as /storage/*. The correct way to mount it is to use the command "sdcard" not "mount". I'm pretty sure any AOSP ROM will automatically mount an EXT4 SD card using the "sdcard" command just like Cyanogenmod does.
Thanks for the info. I'll look into this soon-ish, once my exams are over.
Sent from my SGH-T889V using xda app-developers app
KurianOfBorg said:
It does support EXT4! Officially. All Google ROMs and AOSP can mount EXT4 partitions as /storage/*. The correct way to mount it is to use the command "sdcard" not "mount". I'm pretty sure any AOSP ROM will automatically mount an EXT4 SD card using the "sdcard" command just like Cyanogenmod does.
Click to expand...
Click to collapse
It's still a second class citizen to a xFATx filesystem.
muqali said:
It's still a second class citizen to a xFATx filesystem.
Click to expand...
Click to collapse
No it's fully supported by AOSP exactly the same as FAT on AOSP and exFAT/NTFS on Samsung ROMs. It's the manufacturer's fault for REMOVING support from their ROM. When you insert an EXT SD card on AOSP, it gets mounted at /storage/* just like any other SD card.
In my N7100 with CM 10.1, ext4 has stopped working for my 32gb SDCard on 05-01-2013 nightly, even after reformatting, going back to stock, then reinstalling CM 10.1. I also noticed that my ext4 formatted 8GB SdCard still works, however, so I am not sure if it's a storage size issue in my case (32gb vs 8gb). I am trying a hybrid of 8mb fat32 / 28.*gb ext4 to see if that will work.
KurianOfBorg said:
No it's fully supported by AOSP exactly the same as FAT on AOSP and exFAT/NTFS on Samsung ROMs. It's the manufacturer's fault for REMOVING support from their ROM. When you insert an EXT SD card on AOSP, it gets mounted at /storage/* just like any other SD card.
Click to expand...
Click to collapse
clearday said:
In my N7100 with CM 10.1, ext4 has stopped working for my 32gb SDCard on 05-01-2013 nightly, even after reformatting, going back to stock, then reinstalling CM 10.1. I also noticed that my ext4 formatted 8GB SdCard still works, however, so I am not sure if it's a storage size issue in my case (32gb vs 8gb). I am trying a hybrid of 8mb fat32 / 28.*gb ext4 to see if that will work.
Click to expand...
Click to collapse
Is it formatted properly as ext4? Using mke2fs or (tune2fs to convert to ext4). All ROMs only mount the first partition on the SD card regardless of the file system. Sometime after mounting USB Mass Storage an the SD card doesn't remount properly so you need to reboot the device. You'll most probably want to use MTP with ext4 anyway.
KurianOfBorg said:
Is it formatted properly as ext4? Using mke2fs or (tune2fs to convert to ext4). All ROMs only mount the first partition on the SD card regardless of the file system. Sometime after mounting USB Mass Storage an the SD card doesn't remount properly so you need to reboot the device. You'll most probably want to use MTP with ext4 anyway.
Click to expand...
Click to collapse
Finally fixed the problem by running this command in ROM Toolbox Lite:
"find /storage/sdcard1/ -print0 | xargs -0 chown root:media_rw"
http://forum.xda-developers.com/showthread.php?p=38182488#post38182488
clearday said:
Finally fixed the problem by running this command in ROM Toolbox Lite:
"find /storage/sdcard1/ -print0 | xargs -0 chown root:media_rw"
http://forum.xda-developers.com/showthread.php?p=38182488#post38182488
Click to expand...
Click to collapse
Then it's not mounted properly! Your ext4 SD card has directly been mounted at /storage/* instead of through the FUSE driver. You should NOT be able to see permissions when it's mounted at /storage/*. The physical partition should be mounted at /dev/fuse. Reboot the device and check again whether permissions are visible at /storage/*.
KurianOfBorg said:
Then it's not mounted properly! Your ext4 SD card has directly been mounted at /storage/* instead of through the FUSE driver. You should NOT be able to see permissions when it's mounted at /storage/*. The physical partition should be mounted at /dev/fuse. Reboot the device and check again whether permissions are visible at /storage/*.
Click to expand...
Click to collapse
It's still visible at storage
How do I fix it?
clearday said:
It's still visible at storage
How do I fix it?
Click to expand...
Click to collapse
It should show up at /storege/* but that should be the FUSE driver's mount point with permissions stripped away. The real ext4 partition will be at /dev/fuse.
Any further progress?
I want to use symlinks and ext4 on my note 2 also.
On aosp roms just use the sdcard binary with an initd script.
Gesendet von meinem GT-N7105 mit Tapatalk 2
DerTeufel1980 said:
On aosp roms just use the sdcard binary with an initd script.
Click to expand...
Click to collapse
I'm trying to do this on Tweaked. There is an sdcard binary, however, it appears to be modified by Samsung as it's hardcoded to mount to /storage/sdcard0 and overrides the internal sdcard mount when I use it. It doesn't take a destination parameter like the AOSP/CM version does.
If anyone has an AOSP/CM build environment, could I trouble you for a statically linked version of the sdcard binary? I downloaded CM10.2-nightly, but it's dynamically linked and, of course, doesn't work on the stock based ROMs.
EDIT
It might still be nice, but I figured out a way around it. I hex edited the sdcard binary from the Note2 to use /storage/sdcard1. Then in the mount script, bind mounted it over to /storage/extSdCard. I've rebooted a few times and it seems to be working fine. I am copying data to it over MTP right now. I've attached a zip of the files I'm using.
NOTE: THIS IS NOT A FLASHABLE ZIP.
I might make one later, but this kind of needs to be a manual process anyway.
put the sdcard1 file in /system/xbin
chmod 755 /system/xbin/sdcard1
put the script file in /etc/init.d
set permissions/ownership on it
Now, if you have an ext4 formatted SD, and it's not mounted, you should be able to run the script and have it mount it, run the sdcard1 binary on it, and bind mount it over to the normal extSdCard spot. It will happen at boot if you got it all right.
There are probably improvements that can be made, my shell scripting is a bit rusty. Hopefully this will get people interested in it again, now that the permissions issues are resolved.

Need help understanding SDCard

So when I was on stock my sdcard was located in /sdcard.
I then moved to CM and somehow my sdcard moved to /sdcard/0
I returned to stock because I was in need of taking 13MP picture, so my sdcard was then moved to /sdcard
Now, I moved to Unofficial geehrc4g_spr_us Vanilla RootBox [4.27.13] and all of my previous sdcard was missing (not lost, just replaced to a different folder /data/media) and my new sdcard is now /sdcard
Is /sdcard the same as /data/media ?? if it isn't, would it be safe to delete all the contents of /data/media? Or would that be wiping my sdcard?
I am pretty new to this device so my word is not law by any means; I think that the files in data/media are nothing more than a mirror of /sdcard. Otherwise, you would have blown through all available memory trying to store doubles of all data(at least it would for me, I has this badboy 25 gigs full the first day.......)
Actually my /data/media and my /sdcard have totally different files.
Here is an example : my /data/media has all my downloaded roms and mods and my /sdcard has no downloaded roms
Sent from my LG-LS970
If you go back to a stock rom and take everything in /sdcard and put it in /sdcard/0 then go to an AOSP rom, it'll all be where you expect
does anybody know a quick way to format the sdcard (without wiping the rom)?
I just want to start fresh with the sdcard, I believe that my sdcard has duplicated many times since flashing stock, CM10, and rootbox.
It has been replicated on "/data/media", "/storage", and "/sdcard" and in those folders a "/0" folder has been created as well. I now only have 6GB of space.
Whereas, before the multiple sdcards I had 16-18GB available.
stevek216 said:
If you go back to a stock rom and take everything in /sdcard and put it in /sdcard/0 then go to an AOSP rom, it'll all be where you expect
Click to expand...
Click to collapse
OKayy so will doing this stop the duplicating and mirrored folders and enable stock and aosp to share and get along (as fas as this situation goes) using the same directory?

Categories

Resources