Mover /storage/sdcard0 de NAND a una tarjeta MicroSD extraíble: ¿romperá algo?

Información de contexto

Tengo un Samsung Galaxy S Relay 4G con Android 4.1.2. Viene con 8 GB de flash NAND incorporado, que ya está casi lleno. Por suerte, también tiene una ranura para tarjetas MicroSD.

Mi operador no ofrece subsidios para teléfonos móviles. Espero no tener que actualizar a un nuevo teléfono antes de que salga el BlackBerry Priv: quiero un dispositivo con teclado físico.

En mi dispositivo /storage/sdcard0ocupa 2 GB de los 8 GB.

De los 2 GB:

  • Los mapas sin conexión de OsmAnd ocupan 800 MB.

  • Los podcasts descargados y otras cosas ocupan unos 600 MB.

  • Los datos sin conexión de Google Translate ocupan 200 MB.

  • El resto es misceláneo.

Debido a que no estoy ejecutando Android 6.0 "Marshmallow" o superior, mi dispositivo no incluye soporte para almacenamiento adoptable.

Mis preguntas

Me gustaría pasar /storage/sdcard0de la NAND integrada (8 GB) a la tarjeta MicroSD extraíble que compré (32 GB). Toda la tarjeta MicroSD está formateada como FAT32. En el lugar de lo antiguo /storage/sdcard0, planeo dejar un vínculo simbólico.

He experimentado un poco y está claro que primero tendré que rootear mi teléfono. Está bien.

Me pregunto:

  1. ¿Incluye /storage/sdcard0algún archivo de propiedad o datos de permisos que no quiero perder?

  2. ¿Android (y todas mis aplicaciones) funcionarán bien incluso si /storage/sdcard0en realidad es un enlace simbólico en lugar de una carpeta? Si cree que funcionarán bien, ¿cómo sabe esto? :)

  3. ¿Hay algo más que deba saber antes de hacer esto?

Bueno, no creo que solo rootear sea suficiente. También necesita editar boot.img para crear un enlace simbólico para /storage/sdcard0 a /storage/sdcard1 .. (Es posible que también tenga que formatear la tarjeta SD para formato EXT4). No estoy seguro de si eso funcionará al 100%, pruébelo usted mismo. Además, en realidad, el almacenamiento interno es parte de la partición /data. Básicamente, creo que el almacenamiento interno se ubicará realmente en /data/media/0 Por lo tanto, no hay nada de malo en intentar si tiene una copia de seguridad adecuada y si puede reparar su teléfono :)
No puedes simplemente crear un enlace simbólico después de rootear

Respuestas (1)

Varias cosas en este contexto:

  • las aplicaciones pueden admitir directamente el uso de la tarjeta SD externa como almacenamiento, verifique con su configuración. Esto le ahorrará algunos dolores de cabeza, ya que luego funciona sin "trucos". Al cambiar al nuevo almacenamiento, las aplicaciones pueden incluso ofrecer copiar/mover sus datos, lo que sería lo más fácil para usted.
  • Como Gokul mencionó en sus comentarios sobre su pregunta: no es tan simple como simplemente crear un enlace simbólico desde el almacenamiento anterior al nuevo; después del próximo arranque, lo más probable es que desaparezca (lo que se puede solucionar editando la imagen de arranque) o facilitando init.dcon un guión adecuado, si es posible). Sin embargo, podría vincular cada directorio por separado (por ejemplo /storage/sdcard0/foobar -> /storage/external_sd/foobar, lo que debería funcionar incluso sin root y, lo que es más importante, sobrevivir a un reinicio sin "trucos adicionales"
  • ambos almacenamientos externos usan VFAT, por lo que no se cubren los permisos de usuario (VFAT no los admite), así que "nada que perder" en este contexto;)
Investigué el asunto un poco más.
En mi dispositivo: • /dev/fuseestá montado en /storage/sdcard0( fuse, rw). • /dev/block/vold/179:33está montado en /storage/extSdCard( vfat, rw). • Aninitramfs está montado en /( rootfs, ro), y parece que /storagees parte de eso initramfs.
Entonces, de hecho, parece que cualquier enlace simbólico que crearía /storagedesaparecería al reiniciar. En su lugar, creo que tomaré una de sus sugerencias: creo que moveré y vincularé algunos subdirectorios individuales de /storage/sdcard0.
Exactamente eso: es la variante más segura y fácil, y debería ser posible adb shellincluso sin root (no puedo probar eso, ya que no tengo ningún dispositivo no rooteado aquí;)
DE ACUERDO; lo he probado Pero lnno pudo crear ningún enlace simbólico. El problema es que /storage/sdcard0es un tipo de sistema de archivos que no puede contener ningún enlace simbólico.
link failed Operation not permittedincluso con root, de hecho, parece ser una restricción de VFAT, consulte ¿Cómo crear enlaces de archivos en un sistema de archivos vfat de un disco montado en Linux? (que describe una posible solución que dudo que encaje aquí). Si su dispositivo está rooteado, podría usar algo como FolderMount para eso. De lo contrario, experimentar con sus propios montajes FUSE podría ser suficiente (y un automatizador como Tasker para restablecerlos en el arranque).
En cambio, he cambiado a usar su primera sugerencia. En una de las pantallas de configuración de OsmAnd, lo configuré para buscar su directorio de mapas en la tarjeta extraíble. Y he usado una herramienta de administración de archivos para mover el directorio de mapas a esa tarjeta. Esto ha funcionado bien, y ahora tengo más de un gigabyte de flash NAND disponible.
„La seguridad primero“: si está disponible, ese es el mejor enfoque, por eso lo mencioné primero :) ¡Buen trabajo!