Veo algunas menciones aquí sobre la creación de una tarjeta SD con formato ext4, pero ninguna guía. Esta pregunta estrechamente relacionada sugiere que no hay forma de hacerlo, pero mi pregunta difiere en que mi teléfono está específicamente rooteado.
Formateé mi tarjeta como ext4 (tabla de particiones GUID); mi teléfono Cyanogenmod lo montó en /mnt/fuse/sdcard1
. Seguí las instrucciones aquí para montar la tarjeta en /storage/sdcard1
, creando el siguiente script en/data/local/userinit.sh
#!/system/bin/sh
REALMNT=/mnt/fuse/sdcard1_real
if ! [ -d "$REALMNT" ]; then
mkdir "$REALMNT" || exit 1
fi
mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT"
sdcard "$REALMNT" /storage/sdcard1 1023 1023 &
Reinicié e intenté copiar un archivo (usando ES File Explorer) y pegarlo en su directorio principal, que falló:
/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).
De hecho, puedo reproducir bien el archivo, así que puedo abrirlo. FWIW, cuando intento copiar desde el punto de montaje original ( /mnt/fuse/sdcard1
), aparece un error ligeramente diferente:
Failed to copy the file bar.mp3
Estoy usando un Samsung Galaxy S3 con Cyanogenmod 10.2.0-i9300.
==EDITAR==
su
ls -l /mnt/fuse
drwxrwxr-x media_rw media_rw 2014-03-04 22:08 sdcard1
Eso fue todo. No hay sdcard1_real
en este directorio, así que supongo que el script está fallando.
==EDITAR2==
Intenté modificar el script para solucionar problemas. El script comienza bien, pero luego falla mkdir "$REALMNT"
con el error /data/local/userinit.sh[6]: : not found
.
==EDITAR3==
Sé que el script no funciona, por lo que arreglarlo podría resolver mi pregunta, pero pensé que lo siguiente era interesante. Formateé mi tarjeta SD en mi computadora con Linux y le transfirí algunos archivos. Curiosamente, los errores de permisos solo ocurren en los subdirectorios que creé. En la raíz de la partición (vía /storage/sdcard1
), ya tengo permiso de escritura.
Esto supuestamente se solucionó hace varios meses, pero la gente todavía informa problemas. Puedo leer elementos en la tarjeta, pero no tengo permiso de escritura. Para solucionarlo, combiné estrategias de algunas fuentes .
Las indicaciones $
e #
indican, así que no las escriba.
$ su
# chown media_rw:media_rw /mnt/media_rw/sdcard1
# chmod g+w /mnt/media_rw/sdcard1
Esto cambia los permisos de la tarjeta SD. El propietario y el grupo cambian de system
a media_rw
, y también otorga acceso de escritura al grupo.
No estoy seguro de si es de alguna ayuda, pero posiblemente el problema es que está tratando de montarlo en el lugar equivocado. Este es mi script de trabajo que funciona en un S3 mini con CM11:
#!/system/bin/sh
REALMNT=/mnt/media_rw/sdcard1
if ! [ -d "$REALMNT" ]; then
mkdir "$REALMNT" || exit 1
fi
mount -t ext4 -o rw,noatime /dev/block/mmcblk1p1 "$REALMNT"
sdcard "$REALMNT" /storage/sdcard1 1023 1023
La ubicación REALMNT ya existía, por lo que, por supuesto, nunca se llamó a mkdir. Y media_rw/sdcard1 ya es propiedad de media_rw
También tuve que actualizar /etc/permissions/platform.xml para incluir: <group id="media_rw"/>
en:<permission name="android.permission.WRITE_EXTERNAL_STORAGE">
su
no se puede montar ):
android.stackexchange.com/questions/82089/… `Uso cm-11-20140804-SNAPSHOT-M9-mondrianwifi.zip.Había una respuesta publicada por adasdadasd que quería aceptar, pero desde entonces ha sido eliminada. Lo reproduciré a continuación y aceptaré mi respuesta, pero si vuelve a aparecer adasdadasd, vuelva a publicarlo, lo eliminaré y aceptaré la suya.
https://jira.cyanogenmod.org/browse/CYAN-332
¿Arreglado por defecto? Nuevo cambio en github.
Aquí la línea simple
#!/system/bin/sh
REALMNT="/mnt/media_rw/extSdCard"
mount -t ext4 -o rw,noatime /dev/block/mmcblk1p1 "$REALMNT"
sdcard "$REALMNT" /storage/extSdCard 1023 1023 &
Y aquí ext4 grabable en sd externa
#!/system/bin/sh
chown media_rw:media_rw /mnt/media_rw/extSdCard
chmod g+w /mnt/media_rw/extSdCard
Puede cambiar "extSdCard" como "sdcard1" donde se montó su tarjeta SD externa
Utilizo stockrom con Kingroot, pero intento con Supersu su problema con el montaje del sistema de archivos
izzy
ls -l /mnt/fuse/
yls -l /mnt/fuse/sdcard1_real
. Luego edite su pregunta para incluir los resultados. Mi conjetura es "permisos de archivo incorrectos", ya sea para el montaje o para elfoo/
directorio en la tarjeta. Recuerde, ext4 admite permisos completos de archivos *nix, incl. usuario y grupos.Chahk
su
en la terminal para obtener root. Es posible que deba confirmar la concesión del permiso en el teléfono, si lo está haciendo por primera vez.izzy
echo Script executed > /mnt/fuse/sdcard1/test.log
, y verificar si se está ejecutando. Si es así, haga la línea anterior a la últimamount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log
y verifique el mensaje de error. O ejecute el script manualmente para ver:su /data/local/userinit.sh
.gavilán
touch
muestra que el script se está ejecutando. Intenté ejecutar el script manualmente consu /data/local/userinit.sh
, pero falló. También probésu echo foo
y obtuve un error similar:Unknown id: echo
.izzy
echo
para generar cada comando antes de que se ejecute, y redirigir la salida de error con2>>
.gavilán
exit 1
, luego falló con el error indicado.izzy
/mnt/fuse
no aparece cuando lo intentamkdir
(intente poner unls /mnt
antes delmount
comando)? Si es así,mkdir -p "$REALMNT" || exit 1
podría solucionarlo, pero no estoy seguro de los efectos secundarios cuando el sistema intente crear/mnt/fuse
más tarde y ya exista.Irfan Latif
gavilán