Wie montiere ich eine externe SD-Karte an einem festen Pfad im CM13?

In Marshmallow (und folglich in CM13) wird die externe SD-Karte an einem Pfad gemountet, der ihre Seriennummer enthält. Ich habe eine Reihe von Tasker-Aufgaben, das gelegentliche Skript und viele, viele Apps, die mit einem bestimmten Pfad zur externen SD-Karte konfiguriert sind (in meinem Fall /external_sd, weil es dort in CM12 war).

Gibt es irgendetwas Vernünftiges, was ich gegen diese Änderung in Marshmallow tun kann? Es wird keinen Spaß machen, überall Pfade zu reparieren, nur weil ich auf eine schnellere/größere SD-Karte (mit einer anderen Seriennummer) aktualisiert habe.

Wie würde ich vorgehen, um die externe SD-Karte unter „/external_sd“ auf CM13/Marshmallow verfügbar zu machen?

Antworten (2)

Ich habe einen relativ einfachen Weg gefunden, etwas nahe genug zu tun: Setzen Sie einfach die Seriennummer des Volumes auf etwas Festes. Dies ist für FAT32-formatierte SD-Karten einfach genug: Verwenden Sie einfach 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" für "externe Karte", aber es gibt natürlich auch andere Möglichkeiten )

Jetzt ist meine externe SD-Karte unter gemountet /storage/ECAD-ECAD, was leicht zu merken ist, wenn ich Apps eintippe, die mich keinen Pfad auswählen lassen, und was noch wichtiger ist, kann gleich bleiben, wenn ich beispielsweise auf eine schnellere Karte aktualisiere (wenn ich wiederholen Sie diesen Vorgang).

Die einzige Komplikation sind SD-Karten größer als 32 GB, die Windows nicht in FAT32 formatieren möchte. Das beste Tool, um dies zu umgehen, ist Rufus , ein Open-Source-Tool mit Schwerpunkt auf bootfähigen Laufwerken, aber es kann auch nur ein großes FAT32-Laufwerk formatieren.

Eine andere Möglichkeit wäre, ein init.d-Skript zu verwenden, um den SD-Karten-Link neu zu erstellen.

#!/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

Dieses Skript setzt Folgendes voraus:

  • dass init.d-Skripte nicht von SEAndroid blockiert werden,
  • dass Ihr Gerät ausgeschaltet werden muss, um die SD-Karte zu wechseln, und
  • dass es nur Platz für eine SD-Karte hat.

Ich nehme an, der Grund für die Einführung von Seriennummern im SD-Kartenpfad sind Geräte mit Platz für mehr als eine SD-Karte.