Veo algunas menciones aquí de crear una tarjeta SD con formato ext4, pero no hay 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 ninguno sdcard1_real
en este directorio, ¿así que supongo que el script falla?
== EDIT2 ==
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
.
== EDIT3 ==
Sé que el script no funciona, por lo que solucionarlo podría resolver mi pregunta, pero pensé que lo siguiente era interesante. Formateé mi tarjeta SD en mi computadora Linux y le transferí algunos archivos. Curiosamente, los errores de permiso solo ocurren en los subdirectorios que creé. En la raíz de la partición (vía /storage/sdcard1
), ya tengo permiso de escritura.
ls -l /mnt/fuse/
yls -l /mnt/fuse/sdcard1_real
. Luego edite su pregunta para incluir los resultados. Mi suposición es "permisos de archivo incorrectos", ya sea para el montaje o para elfoo/
directorio de la tarjeta. Recuerde, ext4 admite permisos completos de archivos * nix, incl. usuario y grupos.su
en la terminal para obtener root. Es posible que deba confirmar la concesión del permiso por teléfono, si lo está haciendo por primera vez.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 ejecutar la secuencia de comandos de forma manual para ver:su /data/local/userinit.sh
.touch
muestra que el script se está ejecutando. Intenté ejecutar el script manualmente consu /data/local/userinit.sh
, pero esto falló. También probésu echo foo
, y aparece un error similar:Unknown id: echo
.echo
para generar cada comando antes de ejecutarlo y redirigir la salida de error con2>>
.Respuestas:
Supuestamente esto 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.Esto cambia los permisos de la tarjeta SD. El propietario y el grupo cambian de
system
amedia_rw
, y también le da acceso de escritura al grupo.fuente
¿No está seguro de si es de alguna ayuda, pero posiblemente el problema es que está intentando montar en el lugar equivocado? Este es mi script de trabajo que funciona en un S3 mini con CM11:
La ubicación REALMNT ya existía, por lo que, por supuesto, nunca se llamó al 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">
fuente
su
no se puede montar):
android.stackexchange.com/questions/82089/… `Uso cm-11-20140804-SNAPSHOT-M9-mondrianwifi.zip.Hubo 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 adasdadasd reaparece, vuelva a publicarlo y lo eliminaré y aceptaré la suya.
fuente