9 votos

¿Cómo puedo montar una tarjeta SD con formato ext4 con los permisos correctos (con Root)?

Veo algunas menciones aquí sobre la creación de una tarjeta SD con formato ext4, pero ninguna guía. Este pregunta estrechamente relacionada sugiere que no hay manera 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 la montó en /mnt/fuse/sdcard1 . He seguido 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 el Explorador de Archivos ES) y pegarlo en su directorio padre, lo cual falló:

/storage/sdcard1/foo/bar.mp3: open failed: EACCES (Permission denied).

En realidad puedo reproducir el archivo sin problemas, así que puede abrirlo. Por cierto, cuando intento copiar desde el punto de montaje original ( /mnt/fuse/sdcard1 ), obtengo un error ligeramente diferente:

Failed to copy the file bar.mp3

Estoy usando un Samsung Galaxy S3 con Cyanogenmod 10.2.0-i9300.

\==EDIT==

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?

\==EDIT2==

He intentado modificar el script para solucionar el problema. El script comienza bien, pero luego falla en mkdir "$REALMNT" con el error /data/local/userinit.sh[6]: : not found .

\==EDIT3==

Sé que el script no funciona, así que arreglarlo podría resolver mi duda, pero me pareció interesante lo siguiente. He formateado mi tarjeta SD en mi ordenador Linux, y he transferido algunos archivos a ella. Curiosamente, los errores de permiso sólo se producen en los subdirectorios que he creado. En root de la partición (a través de /storage/sdcard1 ), ya tengo permiso de escritura.

1 votos

Como Root, ejecute ls -l /mnt/fuse/ y ls -l /mnt/fuse/sdcard1_real . Entonces editar su pregunta para incluir los resultados. Mi adivinar es "permisos de archivo incorrectos" - ya sea para el montaje, o para el foo/ directorio en la tarjeta. Recuerde que ext4 admite todos los permisos de archivo de *nix, incluidos los de usuario y grupos.

0 votos

Usted escribe su en la terminal para obtener el permiso Root. Es posible que tengas que confirmar la concesión del permiso en el teléfono, si lo haces por primera vez.

0 votos

O bien el script está fallando, o no se ejecuta en absoluto. Es posible que desee añadir alguna salida de depuración, por ejemplo echo Script executed > /mnt/fuse/sdcard1/test.log y comprueba si está en marcha. Si es así, haz la penúltima línea mount -t ext4 /dev/block/mmcblk1p1 "$REALMNT" 2> /mnt/fuse/sdcard1/test.log y comprueba el mensaje de error. O ejecute el script manualmente para ver: su /data/local/userinit.sh .

7voto

Sparhawk Puntos 169

Esto fue supuestamente se arregló hace varios meses, pero la gente sigue informando de problemas. Puedo leer los elementos de la tarjeta, pero no tengo permiso de escritura. Para solucionarlo, he combinado estrategias de un algunos fuentes .

  1. Tarjeta de partición con tabla de particiones MS-DOS y sistema de archivos ext4. He utilizado GParted en mi ordenador de sobremesa (Linux).
  2. Inserta la tarjeta en tu teléfono. (Probablemente no tendrás acceso de escritura ahora).
  3. Abrir el emulador de terminal instalado por defecto en Cyanogenmod.
  4. Escriba lo siguiente (recomiendo Teclado WiFi para grandes bloques de texto). Dar al emulador privilegios de root cuando los solicite.

El $ y # indican indicaciones, así que no las escribas.

$ 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 da al grupo acceso de escritura.

0 votos

Necesita -R para recursif chown -R media_rw:media_rw /mnt/media_rw/sdcard1

2voto

user59177 Puntos 11

No estoy seguro de que sirva de ayuda, pero posiblemente el problema es que estás tratando de montar en el lugar equivocado? Este es mi trabajo script 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, así que por supuesto el mkdir nunca fue llamado. 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">

0 votos

Gracias. Me había dado por vencido en esto, ya que también tenía un alto uso de la batería con mi script. Como está arreglado en el trunk, ya no me molestaré en buscar una solución. Gracias, sin embargo, y +1.

0 votos

@Sparhawk: No estoy seguro de qué versión de CYM utilizas, pero mi tarjeta SD no se monta automáticamente.

0 votos

@LuisA.Florit No estoy seguro de si querías responder a esta respuesta . De todos modos, estoy usando 11-20140804-SNAPSHOT-M9-i9300. He publicado más información en otra respuesta .

0voto

Sparhawk Puntos 169

Hubo una respuesta publicada por adasdadasd que quería aceptar, pero que ya ha sido borrado. Lo reproduzco a continuación, y acepto mi respuesta, pero si adasdadasd vuelve a aparecer, por favor, vuelve a publicar y borraré esto y aceptaré la suya.

https://jira.cyanogenmod.org/browse/CYAN-332

https://github.com/CyanogenMod/android_packages_providers_MediaProvider/commit/faf3f77b9222554227740aed8127714ea9e3f407

¿Fijado por defecto? Nuevo cambio en github.

0voto

Ykg Puntos 1

Aquí la línea de simulación

#!/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 escribible en sd externa

#!/system/bin/sh
chown media_rw:media_rw /mnt/media_rw/extSdCard
chmod g+w /mnt/media_rw/extSdCard

Usted puede cambiar "extSdCard" como "sdcard1" donde su sdcard externo montado

Iam utilizado stockrom con Kingroot, pero trato de Supersu su problema con el sistema de archivos de montaje

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X