Remount/Bind mount /sdcard as executable - Google Pixel 5 Questions & Answers

I have a rooted Pixel 5a running latest Android 12.
While I can write to the data partition, I would like to keep my own files and programs on the /sdcard tree.
However, it seems that I cannot execute (or link) files on the corresponding fuse filesystem.
Code:
# mount | grep /storage/emulated
/dev/fuse on /storage/emulated type fuse (rw,lazytime,nosuid,nodev,noexec,noatime,user_id=0,group_id=0,allow_other)
I tried doing 'mount /storage/emulated -o remount exec' but while it removed the 'noexec' flag, I still couldn't chmod any file to be executable.
So is there any way to re-mount or bind-mount /storage/emulated or any subtree of it to allow executable files?
Similarly, is there any way to mount it to allow links?
If that is not possible, what is the best place to create my own personal directory of executable files.
What about /data/<mydir> ?
Thanks

Files and directories on sdcardfs have fixed ownership and permissions.
But you can store your executables anywhere under /data, like /data/bin.

Related

Is there a way to make apps use /sdcard/ApplicationData rather than /sdcard ?

Is there a way to make all applications store their data in a folder other than /sdcard (root folder on the sd card) ?
I'm planning on rooting and thought that this time round I can keep my sdcard nice and organized by creating an "ApplicationData" folder in the root of the sdcard and somehow configuring android to use that.
On a similar note, can I move the DCIM (camera photos) to a different location too?
Will the below change-mount-point idea work?
Maybe as root we can
1) un-define /sdcard (in /etc/fstab) //or wherever its defined
2) define /sdcard as /dev/<hdb0>/ApplicationData //change hdb0 to the appropriate device/partition
thanks.
Yeah, I see your point... but quite frankly, I believe it's upto the app developers [my knowledge of the Android world is still from the stone-age!!]... if the app specifies that it's data will be stored in /sdcard/AppName, there's not much you can do, unless you can modify the app...
I was thinking that maybe as root we can
1) un-define /sdcard (in /etc/fstab) //or wherever its defined
2) define /sdcard as /dev/<hdb0>/ApplicationData
edit: added to post#1
britoso said:
I was thinking that maybe as root we can
1) un-define /sdcard (in /etc/fstab) //or wherever its defined
2) define /sdcard as /dev/<hdb0>/ApplicationData
edit: added to post#1
Click to expand...
Click to collapse
I did think of this too...
/sdcard --> /sd/AppData
rest of sd card --> /sd
but I think it would mean some other changes as well... for example... the mount usb functionality would have to be modified to mount/unmount a different volume...
So heres the contents of my fstab file:
Code:
C:\>adb shell cat /system/etc/fstab
/dev/block/mtdblock3 /system yaffs2 rw
/dev/block/mtdblock4 /cache yaffs2 rw
/dev/block/mtdblock5 /data yaffs2 rw
/dev/block/mmcblk0p1 /sdcard vfat rw
/dev/block/mmcblk0p2 /system/sd auto rw
/system/modules/modules.sqf /system/modules squashfs ro,loop
/system/xbin/xbin.sqf /system/xbin squashfs ro,loop
I'll try changing line 4 (/sdcard), I'm guessing /system/sd is for when I apps2sd is enabled.
Question: How do I escape from INSERT/EDIT mode in VI? Tried pressing trackball+1, trackball+1+2...didnt work
Hey britoso!
Keep us updated with your accomplishments. I, personally, am very interested in being able to achieve this.
Good luck!
update: that didnt work.
Note: the way to get the ESCAPE character is CONTROL + [ (hold the trackball then press [ ). The control key is configurable and defaults to the Jogball/TrackBall
here are the contents of my fstab file, the camera app is still writing to the root of the sdcard (/sdcard/DCIM)
Code:
C:\>adb shell cat /system/etc/fstab
/dev/block/mtdblock3 /system yaffs2 rw
/dev/block/mtdblock4 /cache yaffs2 rw
/dev/block/mtdblock5 /data yaffs2 rw
/dev/block/mmcblk0p1 /sdcard/AppData vfat rw
/dev/block/mmcblk0p2 /system/sd auto rw
/system/modules/modules.sqf /system/modules squashfs ro,loop
/system/xbin/xbin.sqf /system/xbin squashfs ro,loop
Heres the output of "df"
Code:
C:\>adb shell df
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 197600 0 197600 0% /dev
tmpfs 4096 0 4096 0% /sqlite_stmt_journals
/dev/block/mtdblock3 148480 100088 48392 67% /system
/dev/block/mtdblock5 200960 63752 137208 32% /data
/dev/block/mtdblock4 97280 39628 57652 41% /cache
/dev/block//vold/179:1
15643712 6843256 8800456 44% /sdcard
@britoso
This is what I found out about mounts in Android...
The init program directly mounts all filesystems and devices using either hard-coded file names or device names generated by probing the sysfs filesystem (thereby eliminating the need for a /etc/fstab file in Android).
And from what I see in your df output, it didn't mount /sdcard/AppData...
Have a few ideas in mind... gonna try 'em out now...
craigacgomez said:
gonna try 'em out now...
Click to expand...
Click to collapse
thanks for the info. Let us know how it works out.
Here's what I reached finally...
To achieve this, I have 2 ideas...
1. We gotta modify the init and change the SD mount point to AppData and add another for the rest of the SD... this however would require a rebuilt ROM (I can't edit init on the phone, need to edit init.c from the source)
2. We push some startup scripts to achieve this, but so far, I haven't been able to mount anything else on /sdcard (operation failed), but I think I'm doing something wrong...
Didn't get much time to experiment... and it mite be a busy end of week for me... but I'll try to squeeze in so time to get this...
Why not ask Cyanogen to do this for us in his next ROM?
Or your next favorite modder?
I'm sure they'll like this idea!?
theres a setting in /init.rc that may help
Code:
export EXTERNAL_STORAGE /sdcard
However / is mounted read-only
mount
rootfs on / type rootfs (ro,relatime)
Click to expand...
Click to collapse

[Q] [Coding] File Explorer --> Cant access /data

Hello there,
Im trying to create my own file explorer (a very stripped down one) with root privileges just to learn how to code for android. Anyways, i am able to access my /system folder and look in every folder besides the /data folder. There are no subdirectories... its just empty. When i check through ADB or through terminal emulator, i can see al the folders in the /data folder. So what am i doing wrong???
I have this setup for now,
Code:
final Runtime runtime = Runtime.getRuntime();
try {
runtime.exec("su");
}
just go get root access, but i dont even know if thats correct. The app asks for root permissions and i can accept it but i still cant view the /data folder...
I also tried
Code:
runtime.exec("mount -o remount,ro -t yaffs2 /dev/block/mtdblock5 /data");
and
Code:
runtime.exec("mount -o remount,rw -t yaffs2 /dev/block/mtdblock5 /data");
and still nothing...

[Q] remount external_sd to another path

heya guys.
is it possible to unload/unmount the external sd (mounted in /mnt/sdcard/external_sd) via command like unmounting it via settings?
i knew that the card is mounted as mmcblk1(p1).
how about to mount it to another place via command?
is it even possible?
trying via terminal emulator says always that the device is still busy and cannot unmounted. even with -f
cheers ~
current state is as following:
/etc/init.d/S01init
Code:
#!/system/bin/sh
# remount
busybox mount -o rw,remount /
#create paths
mkdir /sd
mkdir /mnt/sdcard_ext
chmod 0775 /mnt/sdcard_ext
#duplicate, delete and linking original files
cp /init.rc /init.rc_original
cp /etc/voId.fstab /etc/voId.fstab_original
rm /init.rc
rm /etc/voId.fstab
ln -s /etc/init.d/scripts/init.rc /init.rc
ln -s /etc/init.d/scripts/voId.fstab /etc/voId.fstab
#set init.rc vars
#export EXTERNAL_STORAGE2 /mnt/sdcard_ext
#symlink /mnt/sdcard /sd/sdcard
#symlink /mnt/sdcard_ext /sd/sdcard_ext
#linking new mounting paths
ln -s /mnt/sdcard /sd/sdcard
ln -s /mnt/sdcard_ext /sd/sdcard_ext
busybox mount -o ro,remount /
### end
custom init.rc
Code:
on early-init
start ueventd
on init
sysclktz 0
loglevel 3
# setup the global environment
export PATH /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin
export LD_LIBRARY_PATH /vendor/lib:/system/lib
export ANDROID_BOOTLOGO 1
export ANDROID_ROOT /system
export ANDROID_ASSETS /system/app
export ANDROID_DATA /data
export EXTERNAL_STORAGE /mnt/sdcard
export EXTERNAL_STORAGE2 /mnt/sdcard_ext
export USBHOST_STORAGE /mnt/sdcard/usbStorage
export ASEC_MOUNTPOINT /mnt/asec
export LOOP_MOUNTPOINT /mnt/obb
export BOOTCLASSPATH /system/framework/core.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar:/system/framework/core-junit.jar
# Backward compatibility
symlink /system/etc /etc
symlink /sys/kernel/debug /d
# Right now vendor lives on the same filesystem as system,
# but someday that may change.
symlink /system/vendor /vendor
# create mountpoints
mkdir /mnt 0775 root system
mkdir /mnt/sdcard 0000 system system
mkdir /mnt/sdcard_ext 0000 system system
# Create cgroup mount point for cpu accounting
mkdir /acct
mount cgroup none /acct cpuacct
mkdir /acct/uid
#add booting sound property
setprop audioflinger.bootsnd 1
# Backwards Compat - XXX: Going away in G*
symlink /mnt/sdcard /sd/sdcard
mkdir /system
mkdir /dbdata 0771 system system
mkdir /data 0771 system system
mkdir /cache 0770 system cache
mkdir /config 0500 root root
mkdir /efs 0771 system system
chown system system /efs
chmod 0771 /efs
.
.
.
custom voId.fstab
Code:
## Vold 2.0 Generic fstab
## - San Mehat ([email protected])
##
#######################
## Regular device mount
##
## Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>
## label - Label for the volume
## mount_point - Where the volume will be mounted
## part - Partition # (1 based), or 'auto' for first usable partition.
## <sysfs_path> - List of sysfs paths to source devices
######################
# sdcard mount for the P1
# internal sdcard
{
ums_path = /sys/devices/platform/usb_mass_storage/lun0/file
discard = disable
asec = disable
}
dev_mount sdcard /mnt/sdcard 1 /devices/platform/s3c-sdhci.0/mmc_host/mmc0
# externel sdcard
{
ums_path = /sys/devices/platform/usb_mass_storage/lun1/file
asec = enable
}
dev_mount sdcard1 /mnt/sdcard_ext auto /devices/platform/s3c-sdhci.2/mmc_host/mmc2
#end line ## keep this line
after rebooting:
- the custom voId.fstab is completely ignored...
- init.rc is changed to custom init.rc
- folders and linkings are correct
but it also links to /sdcard and /sdcard/external_sd
i dont want my external sd-card on /sdcard/external_sd and the internal on /sdcard
is there no way to fix that?
Look at this thread. May be it will be helpful for you.
swapping won't help.
problem is to fix the /proc/mounts - paths for the external card.
it wont let me modify it
1. I think you have to put name vold.fstab (little L, not big I)
2. At my phone /sdcard is just symlink to /mnt/sdcard . May be you just should remove this symlink?
I can be wrong because I don't know about changes in the Darky's Extreme Edition v10.1 ROM. but my words are true for stock rom for i9003
falex007 said:
1. I think you have to put name vold.fstab (little L, not big I)
Click to expand...
Click to collapse
that would explain whats going wrong by replacing the old with the new file.
falex007 said:
2. At my phone /sdcard is just symlink to /mnt/sdcard . May be you just should remove this symlink?
Click to expand...
Click to collapse
/sdcard isnt the problem.
its the external sd-card, which i want to mount on an other path (e.g. /mnt/sdcard_ext) and symlink it to /sd/sdcard_ext
symlinking isnt the problem. seperating both cards is all i want.
my desired goal is as following:
internal sd: /mnt/sdcard & symlink to /sd/sdcard
external sd: /mnt/sdcard_ext & symlink /sd/sdcard_ext
I understood what you want by reading /etc/init.d/S01init And I think that if you replace old vold.fstab with new one, the problem with mounting external card will be solved too
if i replace the vold.fstab manually and reboot the phone, external sd wont be recognized. it won't load any or mount it on the right place. both folders, original and desired, stay still empty. if I try to mount it manually, it says that the desired path is not recognized by /proc/mounts. changing the mounts file wont change the mount-paths
UPDATE:
ok, i'm now on this:
Code:
#!/system/bin/sh
FSTAB=/system/etc/vold.fstab
FSTAB_O=/system/etc/vold.fstab_original
# remount rw
busybox mount -o rw,remount /
busybox mount -o rw,remount /system
#create paths
mkdir /sd
mkdir /mnt/sdcard_ext
#duplicate, delete and replace original files
if [ ! -e $FSTAB_O ]; then
cp $FSTAB $FSTAB_O
reboot
fi
rm /init.rc
rm $FSTAB
cp /etc/init.d/scripts/init.rc /init.rc
cp /etc/init.d/scripts/vold.fstab $FSTAB
#set init.rc vars
#export EXTERNAL_STORAGE2 /mnt/sdcard_ext
#symlink /mnt/sdcard /sd/sdcard
#symlink /mnt/sdcard_ext /sd/sdcard_ext
#linking new mounting paths
ln -s /mnt/sdcard /sd/sdcard
ln -s /mnt/sdcard_ext /sd/sdcard_ext
# remount ro
busybox mount -o ro,remount /
busybox mount -o ro,remount /system
### end
this script ended in fully ignoring the new vold.fstab after reboot.
now the external sd is mounted at the old mount-point /sdcard/external_sd...
any suggestions?
btw: does anyone knows where the real /proc/mounts is?
it links to self/mounts... what does that mean?
UPDATE:
after replacing vold.fstab i cant install apps at all.
installing ends in forced hotboot.

twrp mounting wrong /system?

Hi,
I'll try and give as many details as possible. between me trying to get a root method to pass safteynet and updating to Nougat.
I manually updated to nougat as to not lose my data... ie: flashed radio, firmware, system, etc. First oddity was that twrp (twrp-3.0.2-0-shamu.img) would not stick unless i was rooted....weird. I also read I needed to rename recovery-from-boot.p to recovery-from-boot.bak and it would stick, though this made no difference, which i figured out why (coming up later). Ok, so i'm now rooted twrp and twrp is sticking. This is where i went to install the new pixel launcher as i was using nexus launcher before the update and was quite fond of it. I would flash the zip through twrp, but it would never show up as a system app. i tried and tried to get it there, to no avail. Ok, so i need to boot to recovery to access /system... sure, lets try that. I mount /system in twrp, flash the zip, use the file manager to check it out. It is showing in /system/priv-app. Cool. Boot phone, not there. Some weirdness is happening....
Twrp and /system are doing strange things...
While booted (truncated):
Code:
shamu:/ $ mount
/dev/block/dm-0 on /system type ext4 (ro,seclabel,relatime,data=ordered)
While in twrp:
Code:
~ # mount
/dev/block/mmcblk0p41 on /system type ext4 (rw,seclabel,relatime,data=ordered)
Why is one dm-0 and the other mmcblk0p41? Lets keep looking...
While booted:
Code:
shamu:/ $ ls /system/
app build.prop fake-libs framework lost+found priv-app usr xbin
bin etc fonts lib media recovery-from-boot.p vendor
While in twrp:
Code:
~ # ls /system/
app fonts priv-app
bin framework recovery-from-boot.bak
build.prop lib usr
etc lost+found vendor
fake-libs media xbin
Ah! i knew i changed the recovery-from-boot.p file! But.... why is it changed in the twrp /system and not the booted /system? That would explain why twrp kept getting overwritten. But whats going on here? Its like twrp is not mounting the right /system.... yet i can figure out how to mount the proper one.
While booted:
Code:
shamu:/data/data # mount -o rw,remount,rw /system
mount: '/dev/block/dm-0'->'/system': Device or resource busy
While in twrp:
Code:
~ # mount -o rw,remount,rw /system
mount: can't find /system in /proc/mounts
~ # mount /system
~ # mount
rootfs on / type rootfs (rw,seclabel)
tmpfs on /dev type tmpfs (rw,seclabel,nosuid,relatime,size=1506976k,nr_inodes=172637,mode=755)
devpts on /dev/pts type devpts (rw,seclabel,relatime,mode=600)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,seclabel,relatime)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,seclabel,relatime,size=1506976k,nr_inodes=172637)
pstore on /sys/fs/pstore type pstore (rw,relatime)
adb on /dev/usb-ffs/adb type functionfs (rw,relatime)
/dev/block/mmcblk0p38 on /cache type ext4 (rw,seclabel,relatime,data=ordered)
/dev/block/dm-0 on /data type ext4 (rw,seclabel,relatime,data=ordered)
/dev/block/dm-0 on /sdcard type ext4 (rw,seclabel,relatime,data=ordered)
/dev/block/mmcblk0p41 on /system type ext4 (rw,seclabel,relatime,data=ordered)
I'm at a loss about what to do. I thought twrp was not decrypting properly, so i removed exchange and removed my pin code in case that was causing it. No change. Any help or advice would be appreciated. I really would like Pixel launcher and tethering
Specs:
Nexus 6 32gb
Android 7.0, Oct 5,2016
twrp-3.0.2-0-shamu.img
Phone is encrypted, no pin code to boot.
rooted with superuser-r266-hidesu, systemless with phh superuser gui
Bump. No one?
have you changed the option in twrp, to mount system? and the file recovery-from-boot i delete right away, after first boot, so its never an issue, ever.
Subscribed. I have the same problem since I flashed Nougat and so I cannot flash lights-shamu-so-cm13.zip. Well, it flashed, but not to the "right" /system partition...
@simms22 Read over my problem again. There were two seperate /system partitions. One mounted by twrp and one mounted by the actual system. So any changes made to the twrp system had no effect on the actual booted /system.
@dcoulombe I finally gave up... I installed this rom: [ROM][Stock+][NBD90Z]Prerooted-Debloated-Deoxeded-Busybox-Fast & Stable . I pulled the root stuff out of the zip before flashing as to not trip safetynet. With root taken out, it passes. And now i can mount /system as expected. Tethering works and pixel launcher installed. I can help with removing root if you need me to.
Phone is snappy now too.
extremx said:
@simms22 Read over my problem again. There were two seperate /system partitions. One mounted by twrp and one mounted by the actual system. So any changes made to the twrp system had no effect on the actual booted /system.
@dcoulombe I finally gave up... I installed this rom: [ROM][Stock+][NBD90Z]Prerooted-Debloated-Deoxeded-Busybox-Fast & Stable . I pulled the root stuff out of the zip before flashing as to not trip safetynet. With root taken out, it passes. And now i can mount /system as expected. Tethering works and pixel launcher installed. I can help with removing root if you need me to.
Phone is snappy now too.
Click to expand...
Click to collapse
Hi , I have exact same issue with my honor 8...
twrp /system is not the same as nougat /system
when nougat boot up I cannot remount Read write FS.
I believe dm0-5 are lvm and not physical partition but no proof.
if someone have a solution I would be very interested.
Thanks
I found this thread by google searching my phone's problem.
My phone is Honor 8 lite ( PRA series), with exactly the same problem,
bloatware deleted from cust partition at TWRP mode still show up when system boots.
I solved my problem by rooting according to :
https://forum.xda-developers.com/p8...-to-root-huawei-p8-lite-2017-android-t3582179
I guess (not sure) DM is the culprit, the rooting modifies boot image, and disabled dm-verity.

Question Renaming a system file?

I have a rooted Pixel 7 and It was suggested that I rename a system file to prevent the system from updating itself (despite my having turned off all such options). My first attempt was to merely try renaming the file, but that didn’t work because the file systems in mounted RO.
I did some looking around, and the common approach to dealing with this issue is to remount the file system. Following is a ‘screen grab’ of my abd session:
Code:
cheetah:/ $ su
cheetah:/ $ ls /product
app etc fonts framework lib lib64 lost+found media overlay priv-app tts usr wallpaper
(this has the directory I want, so this file system)
cheetah:/ $ mount | grep product
/dev/block/dm-15 on /product type ext4 (ro,seclabel,relatime)
(this is a mounted file system)
cheetah:/ # mount -o rw,remount /product
'/dev/block/dm-15' is read-only
cheetah:/ # mount -o rw,remount -t ext4 /product
'/dev/block/dm-15' is read-only
cheetah:/ # mount -o rw,remount /dev/block/dm-15 /product
'/dev/block/dm-15' is read-only
(three attempts to remount – all failed)
So, now what should I try?
groston said:
I have a rooted Pixel 7 and It was suggested that I rename a system file to prevent the system from updating itself (despite my having turned off all such options). My first attempt was to merely try renaming the file, but that didn’t work because the file systems in mounted RO.
I did some looking around, and the common approach to dealing with this issue is to remount the file system. Following is a ‘screen grab’ of my abd session:
Code:
cheetah:/ $ su
cheetah:/ $ ls /product
app etc fonts framework lib lib64 lost+found media overlay priv-app tts usr wallpaper
(this has the directory I want, so this file system)
cheetah:/ $ mount | grep product
/dev/block/dm-15 on /product type ext4 (ro,seclabel,relatime)
(this is a mounted file system)
cheetah:/ # mount -o rw,remount /product
'/dev/block/dm-15' is read-only
cheetah:/ # mount -o rw,remount -t ext4 /product
'/dev/block/dm-15' is read-only
cheetah:/ # mount -o rw,remount /dev/block/dm-15 /product
'/dev/block/dm-15' is read-only
(three attempts to remount – all failed)
So, now what should I try?
Click to expand...
Click to collapse
I haven't used this, but maybe it can help you.
Lughnasadh said:
I haven't used this, but maybe it can help you.
Click to expand...
Click to collapse
Thank you. Seems like this might work, but after reading several pages, I am not sure how to install/use overlayfs. I have a Windows system - any chance you could point me to something that provides some guidance?
groston said:
Thank you. Seems like this might work, but after reading several pages, I am not sure how to install/use overlayfs. I have a Windows system - any chance you could point me to something that provides some guidance?
Click to expand...
Click to collapse
I've never used this before but I believe once you flash the module it makes the /system RW so you can start making modifications. There's a README that provides some information. I don't know of any other guides besides the information on that Github page.
Checking out the thread below might reveal a solution and/or give a clue or hint...
Pixel 7 Pro Stuck in read only mode (rooted with magisk 26.1) Am I missing something? HELP
Everything ive tried in FX Explorer fails. No matter what I try, for example editing build.prop or anything else, it constantly says read only. i cannot use any method to allow write access. Did i miss something when i rooted with Magisk? I dont...
forum.xda-developers.com
simplepinoi177 said:
Checking out the thread below might reveal a solution and/or give a clue or hint...
Pixel 7 Pro Stuck in read only mode (rooted with magisk 26.1) Am I missing something? HELP
Everything ive tried in FX Explorer fails. No matter what I try, for example editing build.prop or anything else, it constantly says read only. i cannot use any method to allow write access. Did i miss something when i rooted with Magisk? I dont...
forum.xda-developers.com
Click to expand...
Click to collapse
Good suggestion. I installed FX File Explorer, gave it the appropriate permissions, but was unable to change the /product filesystem to read/write.
groston said:
Good suggestion. I installed FX File Explorer, gave it the appropriate permissions, but was unable to change the /product filesystem to read/write.
Click to expand...
Click to collapse
When you say "gave it the appropriate permissions", just to confirm -- that doesn't mean that you changed the security permissions on the folder & files, correct? I hope it means you did not do what the OP in that thread had done and actually did enable root access particularly (hoping that's what you meant on "gave it appropriate permissions").
Because, in certain cases, I've changed permissions on files/folders vs. simply enabling root access mode....
Apologies in advanced if my inquiry seems fairly obvious (to the point of insulting maybe; it is not meant to be), but you never know and many foolish things has been done/assumed on this site that missed many (obvious) things because it wasn't confirmed....

Categories

Resources