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.
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 última mount -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 con su /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 con 2>>
.
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.