Como sé, después de Android
4.4 o algún tipo, su tarjeta de almacenamiento ya no está expuesta directamente y debe conectarse cuidadosamente a través de Mount
puntos específicos que deben tenerse en cuenta a través vold
del sistema.
Mi pregunta es dada esta situación y el hecho de que ext4
es muy complicado en términos de acceso y especialmente ahora que SeLinux
se encuentra encima de él, de alguna manera todavía es posible brindar ext4
soporte cuando no existía inicialmente, como ha sido el caso de lineage
sistemas operativos similares anteriores, ese sería el caso si los puntos de montaje se crean en el momento del arranque y luego vold
se da cuenta de ellos
lo que hice
desde que rooted
( magisk
) los uso su mount master
y los monté manualmente, pero al intentar usarlos vold
falló 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 seLINUX
no 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 EXT4
soporte
, entonces, ¿cómo lo agrego?EXT4
soporte 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 EXT4
contrastan bastante con el segundo partition
app2sd
enfoque 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 EXT4
particiones. la primera es la partición de datos principal, la segunda es app2sd
y 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:
ext4
una tarjeta externa multiparticionada en el momento del arranque, a diferencia del montaje manual que puedo hacer.vold
sepa que se ha montado y todas las aplicaciones y procesos pueden acceder libremente a la partición./storage
repente se convirtieron en solo lectura (por supuesto, la partición de memoria interna siempre es de lectura y escritura). tune2fs
confirmó 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 mmck1p2
en /data/sdext2
y sigo recibiendo un error al montar... mmcblk1p2
en... invalid argument
y otra línea similar
falló... /dev/block/vold/public
en... argumentos no válidos. eso es a través app2sd
y mi magisk
opción global está activada, la misma partición ya está montada en el arranque bajomedia_rw and storage
Bind mounting
la cámara DCIM
y 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 tune2fs
informe. 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 adb
obtengo la misma situación
. El pensamiento adb
serí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 partition
n. ° 2 a través app2sd
de un mount
script que la aplicación escribe en /system/bin/etc or /data/app2sd
los 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
gui
cuadro 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 partitions
un montaje externo bajo /storage
Esa instancia de instalación de ROM fue abortiva. Se repitió boot-loops
después de 10 minutos, así que restauré mi Nandroid
copia de seguridad. Así que no puedo desenterrar más detalles.
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
ext4
una 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 fstab
y definir un init
servicio o poner un init.d
script 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
vold
sepa 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, vold
monta una tarjeta SD externa /mnt/media_rw/[UUID]
y luego la emula a /storage/[UUID]
. Las aplicaciones con WRITE_MEDIA_STORAGE
permiso (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|privileged
un 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 vold
ni monte particiones usted mismo con los permisos correctos como mencioné anteriormente.
Todas las particiones externas de
/storage
repente 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
.
ROM
que no es compatible ext4
con 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.
Irfan Latif
ext4
y montarla manualmente donde quiera.ext4
el 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?usuario1874594
usuario1874594
usuario1874594
alecxs
Irfan Latif
mount
)? 2) Salida de/system/bin/id
? 3) ¿Qué comando usaste exactamente parammck1p2
montar/data/sdext2
? 4) ¿Qué comando usó exactamente para enlazar la carpeta Mount DCIM? 5) ¿Cuáles son los mensajes de error exactos?usuario1874594
usuario1874594
usuario1874594
permissive
lista para usar.usuario1874594
usuario1874594
fbind magisk
el 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/mnt
se 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!