cómo ampliar la compatibilidad con el sistema de archivos EXT4 para tarjetas microSD en stock o sin linaje / ROMS CyanogenMod

Como sé, después de Android4.4 o algún tipo, su tarjeta de almacenamiento ya no está expuesta directamente y debe conectarse cuidadosamente a través de Mountpuntos específicos que deben tenerse en cuenta a través volddel sistema.
Mi pregunta es dada esta situación y el hecho de que ext4es muy complicado en términos de acceso y especialmente ahora que SeLinuxse encuentra encima de él, de alguna manera todavía es posible brindar ext4soporte cuando no existía inicialmente, como ha sido el caso de lineagesistemas operativos similares anteriores, ese sería el caso si los puntos de montaje se crean en el momento del arranque y luego voldse da cuenta de ellos


lo que hice
desde que rooted( magisk) los uso su mount mastery los monté manualmente, pero al intentar usarlos voldfalló porque era demasiado tarde. Encontré algunos artículos sobre cómo se logró esto en versiones anteriores de Android hasta la 5.
después de la 7.6, el mundo de Android se ha vuelto aún más paranoico con la seguridad y seLINUXno podría haber sido más quisquilloso a partir de las versiones de Android 7.x en adelante. Me gustaría saber si existe una guía definitiva sobre cómo se puede hacer esto. No me importa volver a compilar esta función en el kernel. esta es una inversión mucho más gratificante que tratar de buscar ROM personalizadas y alejarse de las existencias solo porque desea EXT4soporte
, entonces, ¿cómo lo agrego?EXT4soporte en stock y ROM similares para versiones de Android> 7.x y haga esto de la manera correcta donde todas las aplicaciones pueden acceder a mis particiones. todas mis particiones EXT4contrastan bastante con el segundo partition app2sdenfoque que se utiliza para ahorrar espacio. por supuesto, también tengo eso, pero tengo dos particiones más utilizadas para extSD(partición principal de almacenamiento de datos externos) y una dedicada a otra aplicación. Totalmente 3 EXT4particiones. la primera es la partición de datos principal, la segunda es app2sdy la tercera es una partición especial dedicada a una aplicación. si importa, estoy rooteado en un dispositivo Samsung que ejecuta stock nougat 7.x.


otra cosa que observé y actualizaré la pregunta en consecuencia es que, de repente, de la nada, las particiones montadas en/almacenamiento ahora se leen solo antes de que no lo fueran. Todavía puedo leer y escribir en ellos a través de /mnt/media_rw. Me pregunto qué salió mal porque muchas aplicaciones dependen del acceso a mis particiones a través del punto de montaje /storage.

Entonces, para resumir, aquí están las preguntas:

  • Monte ext4una tarjeta externa multiparticionada en el momento del arranque, a diferencia del montaje manual que puedo hacer.
  • Móntelo de la manera correcta con la ID de grupo correcta, para que voldsepa que se ha montado y todas las aplicaciones y procesos pueden acceder libremente a la partición.
  • Todas las particiones externas de /storagerepente se convirtieron en solo lectura (por supuesto, la partición de memoria interna siempre es de lectura y escritura). tune2fsconfirmó que todas las particiones están limpias. ¿Por qué sucede esto y cómo se puede solucionar?


gracias por responder. Hice esta pregunta que sonaba como una narración ya que no tenía capturas de pantalla o registros a mano si eso es lo que quiso decir en su comentario de apertura en respuesta. Entonces, esto es lo que estoy tratando de lograr, pero me encuentro con todo tipo de errores.

1) Montar mmck1p2en /data/sdext2y sigo recibiendo un error al montar... mmcblk1p2en... invalid argumenty otra línea similar
falló... /dev/block/vold/publicen... argumentos no válidos. eso es a través app2sdy mi magiskopción global está activada, la misma partición ya está montada en el arranque bajomedia_rw and storage


Bind mountingla cámara DCIMy muchas otras carpetas en el almacenamiento interno fallan cuando el objetivo es /storage/part#y antes funcionaba bien. Mis particiones están limpias según el tune2fsinforme. Qué pasó ?

Gracias de nuevo. Respondiendo a sus preguntas aquí:

1) ¿Qué son los sistemas de archivos montados actualmente (salida de montaje)?
o/p es demasiado grande para caber aquí. AFP

2) Salida de /system/bin/id?
para usuario normal

uid=10112(u0_a112) gid=10112(u0_a112) groups=10112(u0_a112),1015(sdcard_rw),1023(media_rw),1028(sdcard_r),3003(inet),9997(everybody),50112(all_a112) context=u:r:untrusted_app:s0:c512,c768


3) ¿Qué comando usó exactamente para montar mmck1p2 en /data/sdext2? 4) ¿Qué comando usó exactamente para enlazar la carpeta Mount DCIM?

1   mount -o,rw /dev/block/mmcblk1p1 /storage/extsd
2   lp=/sdcard/logger.txt
4   ls./mnt/media_rw
5   ls /mnt/media_rw
6   mkdir -p $_/extsd
7   mount --bind /storage/extsd  $_
8   ls $_

con la ejecución anterior desde la terminal, solo puedo ver archivos desde la terminal. si se ejecuta desde adbobtengo la misma situación
. El pensamiento adbsería persistente, pero no es el caso. después de eso, traté de invocar a vold con la esperanza de que mi montura fuera persistente y visible, pero tampoco tuve suerte.

dreameltemtr:/ # /system/bin/vold
/system/bin/vold
Aborted
134|dreameltemtr:/ # /system/bin/vold --blkid_context=u:r:blkid:s0 --blkid_untrusted_context=u:r:blkid_untrusted:s0 --fsck_context=u:r:fsck:s0 --fsck_untrusted_context=u:
r:fsck_untrusted:s0
ntext=u:r:fsck:s0 --fsck_untrusted_context=u:r:fsck_untrusted:s0              <
SELinux selinux_android_compute_policy_index : Policy Index[2],  Con:u:r:magisk:s0 RAM:SEPF_SECMOBILE_7.1.1_0003, [-1 -1 -1 -1 0 1]

también al mount partitionn. ° 2 a través app2sdde un mountscript que la aplicación escribe en /system/bin/etc or /data/app2sdlos directorios según las opciones que elija. Utiliza un enfoque similar, excepto que
: utilicé su propio binario para la funcionalidad de montaje de enlace
. Haré pruebas periódicas para ver si
se montan ciertas particiones. uno funcionará
- Intento montar a través del dispositivo de bloque (/ dev/block/mmcxxx) así como vold( /dev/block/vold/nnn)
Aquí está ese script y verás lo que acabo de decir. Nuevamente PFA ya que hay un límite máximo de caracteres en una publicación.

4) ¿Cuáles son los mensajes de error exactos? –
los mensajes exactos son 2 líneas del app2sd guicuadro de atención

- Failed to mount /dev/block/ mmcblk1p2 to /data/sdext2 invalid argument <br>
- Failed to mount /dev/block/vold/public/179:34 to /data/sdext2 invalid argument<br>

En la última parte donde no puedo escribir en partitionsun montaje externo bajo /storageEsa instancia de instalación de ROM fue abortiva. Se repitió boot-loopsdespués de 10 minutos, así que restauré mi Nandroidcopia de seguridad. Así que no puedo desenterrar más detalles.

Puede formatear la tarjeta SD externa ext4y montarla manualmente donde quiera. ext4el soporte está presente en todas las ROM, ya sean de serie o personalizadas, desde la primera versión de Android. ¿Cuál es exactamente tu pregunta?
Gracias por responder Irfan, puedo encontrarlo manualmente como lo he escrito.
Gracias por responder Irfan. Puedo encontrarlo manualmente como lo he escrito. Hay 3 preguntas, lo siento si no quedó claro 1) debe montarse en el momento del arranque y leer y escribir 2) la información de montaje debe transferirse para decir al proceso vold para que todos los demás procesos y aplicaciones puedan acceder a ese almacenamiento de datos externo dividir
3) otra cosa que observé y actualizaré la pregunta en consecuencia es que, de repente, de la nada, las particiones montadas en/almacenamiento ahora se leen solo antes de que no lo fueran. Todavía puedo leer y escribir en ellos a través de /mnt/media_rw. Me pregunto qué salió mal porque muchas aplicaciones dependen del acceso a mis particiones a través del punto de montaje /storage.
aclare si está buscando una solución no rooteada. Supongo que su problema no es el sistema de archivos, está más relacionado con los permisos de la aplicación. echa un vistazo a android.stackexchange.com/search?q=WRITE_EXTERNAL_STORAGE
@user1874594 1) ¿Cuáles son los sistemas de archivos montados actualmente (salida de mount)? 2) Salida de /system/bin/id? 3) ¿Qué comando usaste exactamente para mmck1p2montar /data/sdext2? 4) ¿Qué comando usó exactamente para enlazar la carpeta Mount DCIM? 5) ¿Cuáles son los mensajes de error exactos?
Gracias de nuevo, Irfan. Hay un script de montaje que pondré en la pregunta. y también o/p de montaje
agregó más detalles que solicitó Irfan- ¡Gracias!
@ALex gracias de nuevo. Esta ROM está permissivelista para usar.
gracias gente por su ayuda. Finalmente conseguí que el montaje sucediera usando
gracias gente por su ayuda. Finalmente logré que el montaje se realizara usando fbind magiskel módulo, pero no sucedería de inmediato. Tuve que abrir el script que estaba lleno de funciones y una de las funciones buscó Mount media read write as a mountaing pt In /proc /partitions. Y nunca resultó ser cierto con un tiempo de espera de 1800 s. Esta función tuvo que modificarse para que el resultado sea cierto cuando /mntse montó y luego se realizaría el montaje. ¡espero que el tiempo que he invertido en todo esto valga la pena con este mismo módulo que se usa cada vez que me enfrento a esto!

Respuestas (1)

Creo que no entiendo completamente tu pregunta. No está claro qué y cómo ha intentado hasta ahora y qué restricciones o limitaciones ha enfrentado para lograr lo que desea. Pero precisamente respondiendo a tus preguntas:

Monte ext4una tarjeta externa multiparticionada en el momento del arranque, en lugar del montaje manual que puedo hacer

El montaje de la tarjeta SD externa está a cargo de vold. Puede deshabilitar eso fstaby definir un initservicio o poner un init.dscript para montar las particiones en el arranque de la forma que desee.

Móntelo de la manera correcta con la ID de grupo correcta, para que voldsepa que se ha montado y todas las aplicaciones y procesos pueden acceder libremente a la partición

Desde Android 6, en el modo de almacenamiento portátil, voldmonta una tarjeta SD externa /mnt/media_rw/[UUID]y luego la emula a /storage/[UUID]. Las aplicaciones con WRITE_MEDIA_STORAGEpermiso (que está asignado a GID media_rw (1023)) tienen acceso de escritura a nivel de sistema de archivos a la tarjeta SD externa. Pero las aplicaciones de terceros no pueden escribir en la tarjeta SD porque dicho permiso tiene signature|privilegedun nivel de protección. La emulación hace posible que las aplicaciones lean la tarjeta SD completa pero solo escriban en sus directorios privados. Además, las aplicaciones pueden usar las API de Android (como SAF) para guardar archivos en la tarjeta SD. Ver detalles en ¿Cómo mover archivos a una tarjeta SD externa?

Todo este fenómeno está profundamente integrado en el marco de Android: Java y nativo. Entonces, si desea cambiar este comportamiento, debe modificar la fuente de Android y reconstruir la ROM. O no confíe voldni monte particiones usted mismo con los permisos correctos como mencioné anteriormente.

Todas las particiones externas de /storagerepente se convirtieron en solo lectura

Puede haber varias razones posibles, puede consultar el registro del kernel o el registro de Android para ver qué sucede exactamente cuando lo hace mount -o rw,remount. El montaje de solo lectura puede ser un signo de errores debido a la degradación del chip flash. O puede ser que las particiones simplemente alcanzaron su número máximo de montajes, por lo que debe ejecutar fsck.

Gracias por responder. Di estos detalles que me pediste tanto como pude desenterrarlos. Lo que quiero obtener de todo esto es en una ROMque no es compatible ext4con sdcard como CM o Lineage, ¿cómo puedo tener esta funcionalidad para que cada vez que no tenga que flashear una nueva ROM de Lineage y luego lidiar con sus otras deficiencias? Espero estar claro por ahora. Ahora, para esta instancia, no veo la carpeta /etc/init.d, hay una carpeta init e incluso si vuelvo a montar rw. El reinicio eliminará los scripts. Puedo ponerlos en xbin pero no estoy seguro de si se ejecutarán.