Help Remount Default /sdcard PATH, Please - Android Q&A, Help & Troubleshooting

Reasons:
0.) You know, apps like messing up internal storage.
1.) I have installed dozens of ROMs flashed with DualBoot Patcher(It's a great tool), and all of them share the same /sdcard path( /data/media/0, actually it's /raw/data/media/0 ), it's a terriable mess.
2.) Android Nougat does NOT have xposed yet, so I cannot use xposed module XInternalSD to do this.
Due to /sdcard being linked to /storage/emulated/0, I should mount -o bing $another_path to /storage/emulated/0.
What I want to do is:
remount $data_partition_mount_point/media/$my_path to /storage/emulated/0 when the phone is booting, so my system can use another path for internal storage
I want to unmount the default /storage/emulated and only to mount /storage/emulated/0 to keep /storage/emulated clean.
CAN I ?
But after too many times failed, I failed again. I CANNOT mount $my_path as Internal Storage again. It ends up with "Access Denied",or "cross-device link", or seperated permissions(not as a sdcard)
Also, I tried to modify install-recovery.sh to let my scripts execute when booting, but sepolicy denied my orders (like mkdir, mount, setenforce ). So, I run my scripts via APP "Boot Shell".
Is there anyone who know how to do this? Or, can a script change the default Internal Storage path?

Related

[Q] mount -o bind at boot on stock rom

Hi !
I have an application (CamScanner) with large amount of data (~8Gb). This app doesn't support transfering data do external SD card, so I checked mount -o bind command to bind directory with data stored on external SD to directory in /sdcard and it's working correctly. Question is where I can put this command so that system will run it at boot time after external sd card is ready. There is no /etc/init.d directory on my SGS2 (stock XXKI4). I prefer not to install any applications to perform such a simple task...
Thanks for help, regards !
slig said:
I prefer not to install any applications to perform such a simple task...
Click to expand...
Click to collapse
I think you have no choice, as stock kernels do not have init.d support. You'd need to go down the route of either using an app to run a script on boot, install a kernel with init.d support, or stick with your current method of manually running a script when you need to use the app.
Also, you could try asking the developers kindly to allow saving to external_sd. There's an Email Developer link on the Android market, and a Contact Us link on their website
Thanks for response. I found script named init.rc located in "/", it has several mount commands inside, wonder if it can be used...
Also discovered that app Tasked has ability to run shell scripts with root privileges (at boot or at application start). I suppose I have to put this shell script in /system because in /sdcard owner permissions cannot be set so that file cannot be modified (vfat does not support that) and a security hole would be created...
I think that I'll also ask developer for this feature as You suggest.
slig said:
Thanks for response. I found script named init.rc located in "/", it has several mount commands inside, wonder if it can be used...
Click to expand...
Click to collapse
Everything in "/" is initramfs, a volatile ramdisk changes to which would be lost
on reboot. Only exception are directories in which actual partitions are mounted,
like /system and /data (you can check which directories with "mount" command).
Have you tried just using symbolic link?
INFO
This may be the best solution, try something like:
Code:
mkdir /sdcard/AppFolder
ln -s /sdcard/AppFolder /data/data/com.your.application.data.folder
Just in case you don't know, you can execute those command using
Terminal Emulator. You were considering modifications to /, so I guess you already have root.
Yes, I have rooted my SGS2 via ZergRush.
I didn't know that / is volatile initramfs, thanks for that information.
As for symbolic link - unfortunately on my stock ROM both /sdcard and /sdcard/external_sd filesystems are vfat and don't support symbolic linking. Only working way I discovered is bind mount.
In my case, I have the following:
mount -o bind /sdcard/external_sd/CamScanner /sdcard/CamScanner
And application runs OK, all data is accessible and doesn't consume internal flash memory.
I'll take a look how hard would be to write some small application to do just this task - define some pairs of source and target directories and mount - bind them at start.
I've somehow missed the fact that you're need redirection from /sdcard
to /sdcard/external_sd, I was thinking about symlink on /data...
Anyways, there another nice trick you can do - if you can devote your SD card
to this one application, then just edit /system/etc/vold.fstab to make SD card
mount in /sdcard/CamScanner instead of /sdcard/external_sd.

[Q] Link2SD:2nd partition shown but still not working

I tried to install Link2SD in Micromax A58 as the internal storage is very low and need to install some more apps. Already rooted and installed Link2SD to use the ext4 2nd partition of my 8 GB SD card. After trying with all possible ways, couldn't get it worked. All the time it was showing error--
"Mount Script can not be created. Mount: No such file or directory"
Previously even the 2nd partition was not shown as mounted in the storage info of Link2SD but after modifying the install-recovery.sh in /etc path, the storage info now atleast showing the 2nd partition as mounted. My install-recovery.sh looks like below--
#!/system/bin/sh
/system/xbin/daemonsu --auto-daemon &
/system/etc/install-recovery-2.sh
mount -t ext4 -o rw /dev/block/mmcblk0p2 /data/sdext2
mount -t ext4 -o rw /dev/block/vold/179:2 /data/sdext2
Now, the problems are as below--
1) Installed multiple applications but none of them are actually linked to SDcard. The Link2SD shows them as 'On SD Card' and just after installing 9-10 small applications, the internal memory is now full. If I go to 'Create Link', it is giving error '/data/sdext2 mount not found'.
2) When try to recreate mount script and choosing 'ext4' as parameter, it still throws error
"Mount Script can not be created. Mount: No such file or directory"
It seems that even though the storage info shows the 2nd partition as mounted, but system couldn't identify it somehow. So, Link2Sd is not working at all.
Please help and advice further. Thanks a lot.

Lilipop (CM12) mounting a filesystem as root (not accessable to any other user)

I have liliopop CM12 installed on my Note3, I have a encrypted partition, which I mount using luks, I have the mount working now with out issues so the encrypted part can be ignored, if any one is interested I can explain how I did what I did and post the actual scripts used.
The problem is that if I su - from juicessh and then mount the partition the partition is mounted, but only the juice su'ed user can see it. I can log this user out and back in and still see it, but only this users sees it.
For instance
$whoami
10211
#su -
0
#exit
$whoami
10211
now if I run:
$su -l --shell /system/bin/sh -c 'mkdir /storage/sdcard2 ; chmod 777 /storage/sdcard2 ; mount -t ext4 /dev/sda1 /storage/sdcard2 ; df ; exit' ; df
Now this will show that /storage/sdcard2 is mounted when I'm root
when I'm non-root (AKA not ID 0) then I do not see the mount.
Now I login as root using sshdroid:
#whoami
root
#df
does not show sdcard2
Lastly via "Root explorer":
does not see anything mount in /storage/sdcard2 either.
So the issue I'm facing is that I can mount a partition as root and access it, but only as the user I mounted it as, in fact what even makes less sense is that root via sshdroid and root via juicessh can not see what the other user did (mount wise), though if I create a root accessible file that is fine. I used to do this is CM11 using the same commands (different mount points do to the OS change) without any issue. It is as if each root user is unique which is fine on the surface, but since I need access to this encrypted partition, only when accessing documents for work, which normally it is not mounted, but once mounted I need it to be accessible as any other sdcard. Any suggestions?
Thanks,
ERIC
Partly working
I got it partly working if I disable "Mount namespace separation", however I still have an issue that /storage/emulated/0 does not exist, until I use a program like Root Explorer, I mean it exists, but the shell script can not change to it (mount point not found exception), I'm assuming this is also something to do with Lilipop, but I'm not sure what or how to resolve it.
ERIC
Hi,
I state that they are not very knowledgeable about linux commands.
I have installed on my SM-G900F ROM cm12 and it works!
I created a second user, but it does not have root privileges.
I would like, however, to know how you can create a secono user with root privileges?
Thanks for the reply

[Q] Mounting CIFS - Empty Directories

Hi all,
So I've spent hours trying to solve this, using everything I have found on the Internet. (This problem isn't exclusive to CIFS mounts by the way, it's all FS types. CIFS mount is what I require)
Basically I have an android box that's running 4.4.2. I need to mount a NAS box onto the file system. I can do this no problem using Terminal as SU. As soon as I use another App to navigate to the location, the mounted location isn't visible. I know that it is a known bug/security restriction after 4.2, and is due to multiusers or something. People have suggested including the mount command into /system/bin/debuggerd because the start command is a system command that has higher privileges or something. Anyway, I've tried this by just removing the contents of debuggerd and typing the following:
#!/bin/sh
mount -o username=JOELB,password=password -t cifs //192.168.1.252/PUBLIC /data/media/0/NAS
However, this doesn't work on boot, or if i run 'start debuggerd'
Apparently /data/media/0 is the location I should be mounting to, due to the bug/security flaw. Apps like mount manager are useless because they only work for that app.
Can anyone help me on this... It's killing me!!
Many thanks
Joel

/sdcard and /storage/sdcard0 symlinks being broken at boot.

Hi I am a newbie here and I hope I posted on the correct forum.
I am having a problem with my Spreadtrum SC7731 phone. It's internal storage symlink which is /sdcard /storage/sdcard0 is being broken at boot(I think). This started when I flashed supersu through twrp to root the phone. This happens after booting and then a notification will pop up and say "SD card removed, please insert a new one". After that prompt, Apps will then lose access to the Internal Storage and when you check the /storage directory, there is a sdcard0 folder inside it but it is not linked to /storage/emulated/0 which makes this directory virtually useless. I have figured out a work around myself by deleting the directories created at boot and recreating the symlinks with a small script I created:
Code:
su
rm -R /sdcard
rm -R /storage/sdcard0
ln -s /storage/emulated/0 /sdcard
ln -s /storage/emulated/0 /storage/sdcard0
after running this script, apps will have access to the internal storage and the /sdcard in the root directory is again accessible. But sometimes, it will lose its symlinks again so I have to run the script if it happens.
Again this happens after booting, then a notification will appear that the sdcard has been removed. after that happens, I checked the symlinks and its broken.
I don't really know what is the root cause but the work around is quite a hassle for me. I am looking for like a permanent solution to fix this. I don't have an External SD Card and I am not planning on buying one since the Internal Storage is Enough for me as I do not game on this phone.
bump
Bump
help pls

Categories

Resources