[Q] can not mount emulated sdcard after reboot - Android Q&A, Help & Troubleshooting

android4.2.1
I mount my memory as emulated sdcard.
while the first time it mount OK.
I can acess sdcard rightly.
I can not mount after reboot.
error log:
e/ dalvikvm: Cannot mountEmulatedStorage() Read-only file system.
I found it report the dir /storage/emulated/0 is Read-only file system.
the config is just as follows:
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /storage 0550 system sdcard_r
mkdir /storage/emulated 0555 root root
#External storage directories
mkdir /storage/sdcard1 0000 system system
mkdir /storage/usbdisk0 0000 system system
export EXTERNAL_STORAGE /storage/emulated/legacy
export SECONDARY_STORAGE /storage/sdcard1
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
# for backwards compatibility
symlink /storage/emulated/legacy /sdcard
symlink /storage/emulated/legacy /mnt/sdcard
symlink /storage/emulated/legacy /storage/sdcard0
symlink /mnt/shell/emulated/0 /storage/emulated/legacy
symlink /storage/sdcard1 /extSdCard
symlink /storage/sdcard1 /mnt/extSdCard
symlink /storage/usbdisk0 /usbdisk0
symlink /storage/usbdisk0 /mnt/usbdisk0
What's the problem?
Why it's not right after reboot?:crying:
What should I do?
Anyone help, thanks!

Hello,
I am having the same issue on Samsung S4 Running Android 4.2.2. :crying:
Did you manage to find a solution for this problem?
Thanks
yunyixiao said:
android4.2.1
I mount my memory as emulated sdcard.
while the first time it mount OK.
I can acess sdcard rightly.
I can not mount after reboot.
error log:
e/ dalvikvm: Cannot mountEmulatedStorage() Read-only file system.
I found it report the dir /storage/emulated/0 is Read-only file system.
the config is just as follows:
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /storage 0550 system sdcard_r
mkdir /storage/emulated 0555 root root
#External storage directories
mkdir /storage/sdcard1 0000 system system
mkdir /storage/usbdisk0 0000 system system
export EXTERNAL_STORAGE /storage/emulated/legacy
export SECONDARY_STORAGE /storage/sdcard1
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
# for backwards compatibility
symlink /storage/emulated/legacy /sdcard
symlink /storage/emulated/legacy /mnt/sdcard
symlink /storage/emulated/legacy /storage/sdcard0
symlink /mnt/shell/emulated/0 /storage/emulated/legacy
symlink /storage/sdcard1 /extSdCard
symlink /storage/sdcard1 /mnt/extSdCard
symlink /storage/usbdisk0 /usbdisk0
symlink /storage/usbdisk0 /mnt/usbdisk0
What's the problem?
Why it's not right after reboot?:crying:
What should I do?
Anyone help, thanks!
Click to expand...
Click to collapse

yes.my platform has BLCR function.
it make the mount error while reboot again.
I disable boot fast in setting->accessibility
kakopappa said:
Hello,
I am having the same issue on Samsung S4 Running Android 4.2.2. :crying:
Did you manage to find a solution for this problem?
Thanks
Click to expand...
Click to collapse

Related

AOSP 4.2: Encryption Unsuccessfull

Hi all,
i have a problem with my built AOSP 4.2 rom:
Currently i stuck on the screen "Encryption unsuccessfull".
Its no related to my phone but the "init.[HARDWARE].rc" file: in Android 4.2 there are was storage mechansism changed so the
volume manager needs to be reconfigured in this file - here i need some help to configure that. The problem seems to be as
the storage cant be accessed to write, there are error messages in logcat like "cant mount on read-only file system".
Please, dont write here "your sdcard is damaged": i can flash any other custom rom and dont get this message
here are the configured parts that i have made in the rc file:
Code:
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /storage 0550 system sdcard_r
mkdir /storage/emulated 0555 root root
mkdir /storage/sdcard1 0775 system system
mkdir /storage/usbdisk0 0755 system system
export EXTERNAL_STORAGE /storage/emulated/legacy
export SECONDARY_STORAGE /storage/sdcard1
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
symlink /storage/emulated/legacy /sdcard
symlink /storage/emulated/legacy /mnt/sdcard
symlink /storage/emulated/legacy /storage/sdcard0
symlink /mnt/shell/emulated/0 /storage/emulated/legacy
symlink /storage/sdcard1 /extSdCard
symlink /storage/sdcard1 /mnt/extSdCard
symlink /storage/usbdisk0 /usbdisk0
symlink /storage/usbdisk0 /mnt/usbdisk0
And, the new command in this file for "sdcard" is as here
Code:
service sdcard /system/bin/sdcard /data/media /mnt/shell/emulated 1023 1023
class late_start
a full logcat is here.
Thanks for a hint to solve that

[Q] [4.3] SDCARD1 not showing up in file manager

I am not sure if this could be a ROM issue or app issue or is in general 4.3 issue -> I am not able to see /extSdCard or /Sdcard1 in my file manager at the base level. To elaborate - usually file managers list sdcard, extsdcard and internal storage as the first options (of course there is the absolute path to go these which is working fine)
ROM : Carbon Nighltly
Kernel : GoogyMax 1.7.9
Andorid : 4.3.1
File Manager : File Expert (Paid) / CM File manger
First I had SDcard "no write permission" issue. I searched and fixed by modifying the permissions file in /system/etc. However still I notice Sdcard1 comes under group SDCARD_R instead of SDCARD_RW or MEDIA_RW. Anyways it is not preventing me from writing into the folder, so that's ok.
Secondly, in the file managers, I cannot simply see /extSdCard at the base level. What I can see is SdCard and Phone internal storage.
Any pointers?
-----------------------------------------------------------------------------
Dump of init scripts
"init.smdk4x12.rc"
on init
mkdir /mnt/shell/emulated 0700 shell shell
mkdir /storage 0550 system sdcard_r
mkdir /storage/emulated 0555 root root
mkdir /storage/sdcard1 0775 system system
mkdir /storage/usbdisk0 0775 system system
export EXTERNAL_STORAGE /storage/emulated/legacy
export SECONDARY_STORAGE /storage/sdcard1
export EMULATED_STORAGE_SOURCE /mnt/shell/emulated
export EMULATED_STORAGE_TARGET /storage/emulated
# for backwards compatibility
symlink /storage/emulated/legacy /sdcard
symlink /storage/emulated/legacy /mnt/sdcard
symlink /storage/emulated/legacy /storage/sdcard0
symlink /mnt/shell/emulated/0 /storage/emulated/legacy
symlink /storage/sdcard1 /extSdCard
symlink /storage/sdcard1 /mnt/extSdCard
symlink /storage/usbdisk0 /usbdisk0
symlink /storage/usbdisk0 /mnt/usbdisk0
"init.goldfish.rc"
# on init
mkdir /storage/sdcard 0555 root root
export EXTERNAL_STORAGE /storage/sdcard
# Support legacy paths
symlink /storage/sdcard /sdcard
symlink /storage/sdcard /mnt/sdcard
----------------------------------------------------
Solved : Installed AOSP Rom
So the problem was the ROM. I did a complete wipe and installed NeatRom lite 5.4. Issue was resolved. On a different note... battery drain improved a lot.
Good
i will use this

[Q] Porting CM10 to CM10.1 Issues !!

Hello,
I have been trying to port my phone Newman N2 to CM10.1.
Things are going kind well.
But there is a problem i can't solve and i am lost here.
And i have searched and researched and tryed everything i could and squeezed every idea i could have.
Here is the description .
The phone has an internal and external storage.
Both are mounted and accessible via adb.
I can do every operation read and write via adb.
However the phone cannot do nor see any contents of both sdcards.
For instances if i use RootExplorer and go into the sdcard folder it shows nothing.
But if i do it via adb i can list it's contents and modify.
Doing CHMOD on both sdcards mount points changes nothing.... The permissions are as they were ....
STORAGE_LIST.xml
Code:
<storage android:mountPoint="/mnt/sdcard"
android:storageDescription="@string/Phone_memory"
android:primary="true"
android:allowMassStorage="true" />
<storage android:mountPoint="/mnt/ext_sd"
android:storageDescription="@string/storage_sd_card"
android:primary="false"
android:removable="true"
android:allowMassStorage="true" />
VOLD.FSTAB
Code:
dev_mount sdcard /mnt/sdcard 1 /devices/platform/s3c-sdhci.2/mmc_host/mmc1
dev_mount ext_sd /mnt/ext_sd 1 /devices/platform/dw_mmc/mmc_host/mmc0 nonremovable,encryptable
Code:
....
export EXTERNAL_STORAGE /mnt/sdcard
export SECONDARY_STORAGE /mnt/ext_sd
mkdir /storage 0550 system sdcard_r
mkdir /mnt/sdcard 0000 system system
mkdir /mnt/ext_sd 0775 system system
mkdir /mnt/udisk 0775 system system
symlink /mnt/sdcard /sdcard
symlink /mnt/ext_sd /ext_sd
symlink /mnt/sdcard /storage/sdcard0
symlink /mnt/ext_sd /extSdCard
symlink /mnt/ext_sd /mnt/extSdCard
....
Could you guys throw any TIP or IDEA ?
Thank you in advance!
2226424 5a
BUMP!

[Q] [REF] [Android 4.4] sdcard symlinks

I'm looking for a smooth way to use symlinks from/to both the emulated sdcard and an ext4 formatted external sdcard in order to easily redirect data between the two.
However the way those file systems are both mounted and linked on various locations in the directory tree isn't very straight forward:
Mount Points
The external sdcard gets mounted natively on /mnt/media_rw/sdcard1 ... and once again virtually with a fuse layer on top on /storage/sdcard1
Code:
[email protected]:/ # mount | grep sdcard1
/dev/block/vold/179:33 on /mnt/media_rw/sdcard1 type ext4 (rw,dirsync,context=u:object_r:sdcard_external:s0,nosuid,nodev,noexec,noatime,data=ordered)
/dev/fuse on /storage/sdcard1 type fuse (rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other)
[email protected]:/ # df -m | grep sdcard1
/dev/block/vold/179:33 14953 174 14627 1% /mnt/media_rw/sdcard1
/dev/fuse 14953 174 14627 1% /storage/sdcard1
The emulated sdcard (origin: /data/media/*) is virtually fuse mounted on /mnt/shell/emulated (and /storage/emulated/**)
Code:
[email protected]:/ # mount | grep emulated | grep fuse
/dev/fuse on /mnt/shell/emulated type fuse (rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other)
/dev/fuse on /storage/emulated/0 type fuse (rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other)
/dev/fuse on /storage/emulated/0/Android/obb type fuse (rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other)
/dev/fuse on /storage/emulated/legacy type fuse (rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other)
/dev/fuse on /storage/emulated/legacy/Android/obb type fuse (rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other)
[email protected]:/ # df -m | grep emulated | grep fuse
/dev/fuse 5465 164 5301 3% /mnt/shell/emulated
/dev/fuse 5465 164 5301 3% /storage/emulated/0
/dev/fuse 5465 164 5301 3% /storage/emulated/0/Android/obb
/dev/fuse 5465 164 5301 3% /storage/emulated/legacy
/dev/fuse 5465 164 5301 3% /storage/emulated/legacy/Android/obb
Links
Existing symlinks pointing to sdcards:
Code:
/external_sd -> /storage/sdcard1
/mnt/external_sd -> /storage/sdcard1
/sdcard -> /storage/emulated/legacy
/mnt/sdcard -> /storage/emulated/legacy
/storage/sdcard0 -> /storage/emulated/legacy
/storage/emulated/legacy -> /mnt/shell/emulated/0
Symlink Creation
Fuse mount points don't allow for creation of symlinks:
Code:
[email protected]:/ # ln -s /storage/sdcard0 /storage/sdcard1/link_to_sdcard0
ln: /storage/sdcard1/link_to_sdcard0: Function not implemented
But native mount points do:
Code:
[email protected]:/ # ln -sv /storage/sdcard0 /mnt/media_rw/sdcard1/link_to_sdcard0
'/mnt/media_rw/sdcard1/link_to_sdcard0' -> '/storage/sdcard0'
Permissions
Code:
drwx------ 4 1023 1023 /mnt/media_rw
drwxr-xr-x 4 root root /mnt/media_rw/sdcard1** # when mounted
drwx------ 2 1023 1023 /mnt/media_rw/usbdisk # when unmounted
drwxr-x--x 5 root 1028 /storage
drwxrwx--x 4 root 1028 /storage/sdcard1** # when mounted
drwx------ 2 root root /storage/usbdisk # when unmounted
drwx------ 3 shell shell /mnt/shell
drwxrwx--x 5 root 1028 /mnt/shell/emulated** # only 0 populated (legacy, obb empty)
drwx------ 2 shell shell /mnt/shell/emulated # when unmounted
drwxr-x--x 5 root 1028 /storage
dr-xr-xr-x 2 root root /storage/emulated**
1015=sdcard_rw
1023=media_rw
1028=sdcard_r
After applying these permission fixes to overcome external storage restrictions introduced in 4.4 the link becomes accessible in File Manager, but again only via the native mount point.
Storage Variables
Am I wrong assuming that apps rather use environment variables to determine storage paths than looking in the directory tree!? Well, obviously they point to the unwanted fuse mount points:
Code:
[email protected]:/ # env | grep sdcard1
EXTERNAL_SD=/storage/sdcard1
SECONDARY_STORAGE=/storage/sdcard1:/storage/usbdisk
[email protected]:/ # env | grep emulated
EMULATED_STORAGE_SOURCE=/mnt/shell/emulated
EMULATED_STORAGE_TARGET=/storage/emulated
EXTERNAL_STORAGE=/storage/emulated/legacy
Solution?
Here is some official information on how storage is used: http://source.android.com/devices/tech/storage/config-example.html
I've started messing around building a new ramdisk in order to gain control over the cards. Ideas so far are:
- remove fuse stuff from init.rc --> use bind mounts for the emulated sdcard?
- remove vold stuff from init.rc?
- setting up mount points manually in fstab
- changing variables to the native mount point in case of the external sdcard
Ideas for solutions causing the least headache?
---
Notes:
/etc/init* script
/system/build.prop: persist.fuse_sdcard=false # emulated sdcard does not get mounted at all
I share your pain trying to get your head around how android 4.4 works.
The documentation is definately lacking...
Don't forget also that ALL shares are declared to the os through "framework-res.xml",
and this file is very pedantic with its "strings".
ie: the string-names are built-in. Things break if you change them.
In the end when I eventually got my head around it (sort of), it was easier to use the designed in methods to achieve/share what I wanted,
rather than try to modify android4.4 back to 4.1.
edit2:
as my info cost me dozens of googling hours, and lots of experimentation, i'll add this hoping it will be useful....
Remember you actually can share: emulated storage, other internal storage, and plug-in usb storage, internally, and externally via mtp.
and it does work well.
http://source.android.com/devices/tech/storage/config-example.html
The link you posted above contains nearly everything you need to get shares and mtp working nicely for you...
edit3:
I needed this as well.
export PRIMARY_STORAGE /storage/emulated/legacy # RC note: gets around issues
edit4:
I also had to relax/change the permissions to make it work properly:
mkdir /storage/emulated 0750 media_rw media_rw # RCmod: was 0555 root root
and here as well:
#External storage directories
mkdir /mnt/media_rw/sdcard1 0750 media_rw media_rw
mkdir /mnt/media_rw/sdcard2 0750 media_rw media_rw
mkdir /storage/usbdisk0 0750 media_rw media_rw
there were other things as well but hopefully you can use this as a starting point.
....and then there is Selinux
So I was able to create a symlink to external sdcard on LG g3 running rooted stock kit Kat Rom. I successfully changed Groove's (formerly xboxmusic) offline storage to external sdcard.
The following command was successful in creating a link, but Groove was unable to download music to the directory presumably due to permissions on /mnt
su
cp -rp /data/media/0/Android/data/com.microsoft.xboxmusic /storage/external_sd
rm -r /data/media/0/Android/data/com.microsoft.xboxmusic
ln -s /mnt/media_rw/external_sd/com.microsoft.xboxmusic/ /data/media/0/Android/data
After these commands, Groove was producing errors stating that there was not enough disk space. As said before, I believe this was due to it's lack of permissions to /mnt
Replacing the last command with the following worked and offline music is now downloaded to external sd card
ln -s /storage/external_sd/com.microsoft.xboxmusic/ /data/media/0/Android/data
data
Hope this helps.
monkeyfncoconut said:
So I was able to create a symlink to external sdcard on LG g3 running rooted stock kit Kat Rom. I successfully changed Groove's (formerly xboxmusic) offline storage to external sdcard.
The following command was successful in creating a link, but Groove was unable to download music to the directory presumably due to permissions on /mnt
su
cp -rp /data/media/0/Android/data/com.microsoft.xboxmusic /storage/external_sd
rm -r /data/media/0/Android/data/com.microsoft.xboxmusic
ln -s /mnt/media_rw/external_sd/com.microsoft.xboxmusic/ /data/media/0/Android/data
After these commands, Groove was producing errors stating that there was not enough disk space. As said before, I believe this was due to it's lack of permissions to /mnt
Replacing the last command with the following worked and offline music is now downloaded to external sd card
ln -s /storage/external_sd/com.microsoft.xboxmusic/ /data/media/0/Android/data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
data
Hope this helps.
Click to expand...
Click to collapse
Is it true that:
symbolic linking
ext4->fuse works
ext4->vfat does not work?
And,
Is it possible fuse->fuse, or fuse->ext4?
Hi, I have a problem, I have the odd situation that the system partition shows 4gb and the /sdcard shows the 54.9gb, but there not linked, can some one guide me how to link them please.

How to create a mount point or symlink in /storage that survives reboots?

I'm on jelly bean 4.1.2 (NeatRom 6.4) which uses /storage/extSdCard. I'd like to either create another mount point for the external sd card in /storage/sdcard1 or a symlink /storage/sdcard1 that points to /storage/extSdCard and I want that to survive after reboot. Currently it does not. I've read around but am still stuck.
The symlink trick works, but is erased after reboot. I created it as:
Code:
su
mount -o rw/remount /
ln -s /storage/extSdCard /storage/sdcard1
I tried to add a mount point by editing /etc/vold.fstab but the mount point is not created after reboot. The line I added in /etc/vold.fstab is the 2nd line here:
Code:
dev_mount sdcard1 /storage/extSdCard auto /devices/platform/s3c-sdhci.2/mmc_host/mmc1
dev_mount sdcard1 /storage/sdcard1 auto /devices/platform/s3c-sdhci.2/mmc_host/mmc1
Any clues?
Well, after some more digging around, this are some options -- but note that these also depend on which rom you're using. On NeatRom 6.4 (jelly bean 4.1.2 based on Samsung XXMS4):
There is a file /system/bin/customboot.sh where you can add commands.
Inspecting /etc/init.d/97neatrom I notice it executes "postbootinit" so you should be able to edit or create /system/bin/postbootinit and place commands in there as well.
You can also add a file in /etc/init.d, say /etc/init.d/99sdcard1 that executes commands.
NOTE 1: the root dir / is mounted as readonly at boot so if you want to add a symlink or mount point in /storage then you need to mount it as read-write first.
NOTE 2: the external sdcard dev block volume is not immediately available after boot, I had to add a 2 second delay. This is not a problem for symlink.
Symlink solution (easier, no delay waiting for block device), place the following in /etc/init.d/99sdcard1
Code:
#!/system/bin/sh
ln -s /storage/extSdCard /storage/sdcard1
ln -s /storage/extSdCard /mnt/sdcard1
ln -s /storage/sdcard0 /mnt/sdcard0
I also added standard symlinks in /mnt.
Mount solution, place the following in /etc/init.d/99sdcard1 (run "mount" first in a terminal to find out which block device in /dev/block/vold is mounted in /storage/extSdCard):
Code:
#!/system/bin/sh
sleep 2
mount -o rw,remount /
mkdir /storage/sdcard1
# /dev/block/vold/179:9 is the one mounted in /storage/extSdCard
mount -t vfat -o umask=000 /dev/block/vold/179:9 /storage/sdcard1
ln -s /storage/extSdCard /mnt/sdcard1
ln -s /storage/sdcard0 /mnt/sdcard0
The reason I needed this is that I used Cyanogenmod 11 (KitKat 4.4) for a long while and got fed up with it being very slow on my SGS2 so I came back to Jelly Bean, but I had many apps that were using /storage/sdcard1

Categories

Resources