¿Cómo montar una tarjeta SD externa en una ruta fija en CM13?

En Marshmallow (y en consecuencia en CM13), la tarjeta SD externa se monta en una ruta que contiene su número de serie. Tengo un montón de tareas de Tasker, un script ocasional y montones de aplicaciones configuradas con una ruta específica a la tarjeta SD externa (en mi caso, /external_sd porque ahí estaba en CM12).

¿Hay algo sensato que pueda hacer sobre este cambio en Marshmallow? Reparar rutas en todas partes solo porque actualicé a una tarjeta SD más rápida/más grande (que tiene un número de serie diferente) no será divertido.

¿Cómo haría para que la tarjeta SD externa esté disponible en "/external_sd" en CM13/Marshmallow?

Respuestas (2)

Encontré una manera razonablemente fácil de hacer algo lo suficientemente parecido: simplemente configure el número de serie del volumen en algo fijo. Esto es bastante fácil para las tarjetas SD formateadas en FAT32: solo use Sysinternals VolumeID :

D:\>vol D:
 Volume in drive D has no label.
 Volume Serial Number is 07F5-432C

D:\>volumeid D: ECAD-ECAD

VolumeID V2.01 - Set disk volume id
Copyright (C) 1997-1999 Mark Russinovich
Sysinternals - www.sysinternals.com

Volume ID for drive D: updated to ecad-ecad

("ecad" por "tarjeta externa" pero hay otras posibilidades , por supuesto)

Ahora mi tarjeta SD externa está montada en /storage/ECAD-ECAD, que es fácil de recordar para escribir esas aplicaciones que no me permiten elegir una ruta y, lo que es más importante, puede permanecer igual cuando actualizo a una tarjeta más rápida, por ejemplo (si repita este procedimiento).

La única complicación son las tarjetas SD de más de 32 GB, que Windows se niega a formatear en FAT32. La mejor herramienta para solucionar esto es Rufus , una herramienta de código abierto que se enfoca en unidades de arranque, pero también puede formatear una unidad FAT32 grande.

Otra opción sería usar un script init.d para volver a crear el enlace de la tarjeta SD.

#!/system/bin/sh

SERIAL=`ls /mnt/media_rw/ | head -n 1`
FULL_PATH="/mnt/media_rw/$SERIAL"
SERIAL_LENGTH=${#SERIAL}
LINK_NAME="/external_sd"

if [ -e $LINK_NAME ] ; then
    echo "Link already exists!"
elif [[ $SERIAL_LENGTH -lt 1 ]] ; then
    echo "Badly formed path!"
elif [ ! -d "$FULL_PATH" ] ; then
    echo "SdCard path not found!"
else
    mount -o rw,remount /
    ln -s $FULL_PATH $LINK_NAME
    mount -o ro,remount /
fi

Este script asume:

  • que los scripts init.d no están siendo bloqueados por SEAndroid,
  • que su dispositivo debe estar apagado para cambiar la tarjeta SD, y
  • que solo tiene espacio para una tarjeta sd.

Supongo que el motivo de la introducción de números de serie en la ruta de la tarjeta SD es para dispositivos con espacio para más de una tarjeta SD.