Android 6 MicroSD Karte als interner Speicher im Zusammenspiel mit Custom Recovery

  • 23 Antworten
  • Neuester Beitrag
Diskutiere Android 6 MicroSD Karte als interner Speicher im Zusammenspiel mit Custom Recovery im Allgemeines zum Custom-Recovery im Bereich Allgemeines zu Root, Kernel und Custom-ROMs.
cptechnik

cptechnik

Moderator
Teammitglied
Hat schon jemand ein CM-OTA-Update mit einer partitionierten SD-Karte und TWRP durchgeführt?
Mein TWRP 3.0.2-0 auf dem peregrine will die "interne" Partition auf der externen SD-Karte nicht erkennen...
CM arbeitet damit aber schon seit Wochen...
 
magicw

magicw

Ehrenmitglied
Also mit voll adoptierter SD funktioniert es (Moto E2).
Du meinst die Split-variante - teils mobil teils adoptiert?
 
cptechnik

cptechnik

Moderator
Teammitglied
Ja, das meine ich...
(TWRP hat jetzt auch einen extra Menüpunkt für das partitionieren... )
Twrp erkennt zwar mit "Speicher wechseln" den gesamten Speicher ( >8 GB ) aber keinen Zugriff drauf (cmupdater im Dateimanager und mit "installieren" nicht sichtbar)

Ich habe das mit der 32 GB Transcend vom peregrine (cm 13) und mit der 64 GB Samsung vom Thea (stock) im peregrine ausprobiert, gleich.

PS : Screenshot eingefügt
 

Anhänge

Zuletzt bearbeitet:
O

ooo

Lexikon
Folgende (One-Click) Lösung gilt (nur) für

OTA-Updates für CM 13 ROMs mit adopted SD Card im mixed mode
(ein Teil interner Speicher, ein Teil tragbarer Speicher) und "Daten auf SD Card migriert"

Kurzfassung:
  • ooo-cmu-v1.txt in den internen Speicher kopieren
  • ooo-cmu-v1.txt umbenennen nach cmu
  • Terminal Emulator öffnen
  • Eingabe
___

Details:

Ausgangs-Situation (für Tests des shell scripts)
  • Bootloader ist entsperrt
  • TWRP Recovery 3.0.2-0 (oder jünger) ist installiert
  • (Voll-Backup vom produktiven Stand - bereits vor den Tests gemacht)
  • (Für Tests: Ältere CM 13 Nightly als Clean Install installiert, Developer-Optionen aktiviert, CM-Root aktiviert mindestens für Apps, CM-Terminal aktiviert)
  • Eine (leere oder auf den Rechner weggesicherte) SD Card wurde im mixed mode partitioniert und ist eingesetzt (sm partition <disk:...> mixed <nn>), also ein Teil als Adopted Storage und ein Teil als "normaler" Tragbarer Speicher
  • Die Daten wurden danach bereits auf die SD Card (nicht sdcard1, sondern die andere) migriert (Einstellungen > Speicherplatz & USB > SD-Karte ... > Menü oben rechts > Daten migrieren - Der Menü-Punkt ist nur vorhanden, wenn die Daten noch nicht migriert wurden, sonst sind die Daten bereits auf die SD Card migriert)
  • Das W-LAN wurde eingerichtet und funktioniert (CM-Updater, Anzeige und Download neuer Nightlies)
  • SuperSU ist (noch) NICHT installiert (kommt später - als systemless root = diverse Vorteile ...)

Vorbereitung auf ein CM-Update (nur für Adopted SD Card im mixed mode)
  • Auf der externen SD Card befinden sich (z. B.) die folgenden Dateien im obersten Verzeichnis
  • ooo-cmu-v1.txt
  • Optional:
    SuperSU v2.74-2 oder SuperSU v2.76 (TWRP flashable .zip)
    (siehe unten unter Tipps > Aktivierung automatisches systemless Rooten mit SuperSU zur Vorbereitung des shell scripts)
  • Optional:
    ooo-make-softlink-to-sdcard1-v1.txt

Vorgehensweise
  • Der CM-Updater meldet eine neue Nightly
  • Die Nightly ist jetzt im CM-Updater manuell downzuloaden (aber NICHT von dort zu installieren, weil das im mixed mode schief geht)
  • Am Phone ein Terminal öffnen (CM-Terminal oder Terminal Emulator)
  • Eingabe
    su
    . /storage/<UUID der sdcard1>/ooo-cmu-v1.txt
    (Zwischen dem ersten Punkt und dem ersten Schrägstrich ist ein Leerzeichen.)

Was passiert jetzt?
  • Das Script ooo-cmu-v1.txt kopiert die jüngste heruntergeladene Nightly in ein neues Verzeichnis cmupdater auf sdcard1
  • Danach wird ein OpenRecoveryScript im Verzeichnis /cache/recovery/ angelegt, in das TWRP Recovery gestartet und dort ausgeführt
  • Das OpenRecoveryScript erledigt dann die folgenden Punkte
  1. Es wird ein TWRP Voll-Backup (boot, system, data) gemacht (Verzeichnis ist /sdcard1/TWRP/BACKUPS/<Serien-Nr-des-Phones>/<Tages-Datum_Uhrzeit>-cm-<Versionstring der Nightly>-adop/)
  2. Wegsichern des Verschlüsselungs-Keys der Adopted SD Card (und weiterer Dateien) in ein .tar.gz-Archiv (adopted-key.tar.gz) in das neu angelegte TWRP-Backup-Verzeichnis (damit alles beieinander ist)
  3. Installation der neuen, zuvor kopierten, Nightly (/sdcard1/cmupdater/<nightly>.zip)
  4. Nach der Installation wird diese Nightly aus dem Verzeichnis cmupdater auf sdcard1 gelöscht, um Platz zu sparen
  5. Nur, wenn im Script manuell geändert/eingetragen (Standard ist "nicht installieren"):
    • Vorbereitung auf SuperSU systemless (Anlage/Überschreiben der Datei /data/.supersu mit Inhalt SYSTEMLESS=true)
    • Installation der SuperSU flashable zip-Datei (also zusätzlich zu CM-Root nochmal mit SuperSU rooten)
  6. Das zuvor angelegte OpenRecoveryScript (/cache/recovery/openrecoveryscript) wird automatisch gelöscht
  7. Abschließend erfolgt ein reboot in das Android-System, also in den Homescreen (bei SuperSU: es können dabei mehrere Zwischenstarts erfolgen = normal, s. a. Beschreibung von Chainfire dazu)
Ergebnis/Auswirkungen/Vorteile
  • CM ist aktualisiert (wie es der CM-Updater auch tun würde)
  • Es wurde vor dem Update automatisch ein TWRP-Voll-Backup gemacht
Wenn der SuperSU-Switch im Script aktiviert wurde (zusätzlich):​
  • Das Phone ist mit systemless SuperSU gerootet
    (CM-Root kann in den Entwickler-Optionen deaktiviert werden)
  • Durch systemless Root können unter /su/su.d/ (wegen SE Linux strict mode in der ROM) vorher nicht funktionierende /etc/init.d/-Scripte angelegt werden, die beim Starten des Phones jetzt wieder korrekt ausgeführt werden
  • Unter /su/xbin/ können eigene ausführbare (root:shell -rwxr-x---) scripte/binaries angelegt werden, die in einem Terminal oder einem shell script als ganz normaler Befehl aufgerufen werden können
  • Bestimmte Apps, die mit CM-Root nicht funktionieren, machen jetzt durch SuperSU weniger/keine Probleme mehr
  • Man kann bestimmte Apps jetzt systemless installieren (z. B. systemless AdAway, systemless Xposed etc.) ohne, dass die system-Partition verändert wird (Das ist allerdings eher für Stock-ROMs interessant)
Abschluss-Arbeiten (optional, nur nach installierter systemless SuperSU, einmalige Aktion)
  • Die Datei ooo-cmu-v1.txt in das Verzeichnis /su/xbin/ kopieren, Berechtigungen auf root:root und -rwx------ setzen; die Datei kann auch in etwas anderes umbenannt werden; z. B. nur cmu, cmup oder cmupdate etc.)
  • Die Datei ooo-make-softlink-to-sdcard1-v1.txt in das Verzeichnis /su/su.d/ kopieren, Berechtigungen auf root:root und -rwx------ setzen; die Datei kann auch in etwas anderes umbenannt werden (z. B. nur link-sdc1 oder link-me) - Diese Datei ist ein init.d-script und sorgt bei jedem Start des Phones dafür, dass die externe SD Card (/storage/<uuid der externen sdcard>/ (zusätzlich) als /sdcard1/ ansprechbar ist. - Vorteil: man muss die uuid nicht ständig abtippen/verwenden/in Einstellungen eintragen etc.

Tipps
  • Wer lieber in den internen Speicher sichert (data/media/0/ == /sdcard/ unter TWRP), der kann im Script die folgende Zeile (83) von "$sdc_twrp_ext" auf "$sdc_twrp_int" ändern:
    sdc_twrp="$sdc_twrp_ext" # twrp backups in twrp > /external_sd/, visible on portable part of adopted sdcard
    (Wie immer gilt: Für alle Änderungen am Script bitte Linux-/Unix-Zeilenschaltungen benutzen, z. B. mit Notepad++ am (Windows-)Rechner oder direkt unter Linux oder auf dem Phone editieren.)
  • Wer systemless root aktivieren möchte, um die o. g. Vorteile zu haben, ändert die folgende Zeile (91) entsprechend ab und stellt die zu benutzende SuperSU (flashable zip) an den in der Variable "supersu_flashable_zip" angegebenen Pfad:
    supersu_flashable_zip="" # no installation of supersu
    Beispiel (neue Zeile):
    supersu_flashable_zip="/data/media/0/BETA-SuperSU-v2.74-2-20160519174328.zip"
    (Wie immer gilt: Für alle Änderungen am Script bitte Linux-/Unix-Zeilenschaltungen benutzen, z. B. mit Notepad++ am (Windows-)Rechner oder direkt unter Linux oder auf dem Phone editieren.)
  • ooo-cmu-v1.txt benutzt immer die <nightly>.zip mit dem höchsten Datum. - Wer eine ältere installieren möchte, kann alle jüngeren umbenennen (z. B. in <nightly>.zip.off) oder aus dem cmupdater-Verzeichnis in ein anderes verschieben. - Dieses Downgrading hat aber evtl. negative Auswirkungen und löst Fehler aus, falls die Datenbanken der System-Apps aufgrund ihrer neueren Struktur das nicht mitmachen.
  • Alle Apps, die ein shell script (als root) ausführen (und evtl. einen Shortcut auf einem Homescreen anlegen) können, sind geeignet, um den umständlichen Aufruf von Terminal öffnen > Einagbe su > ooo-cmu-v1.txt > ausführen abzukürzen. - Dann hätte man auch (ganz ohne Tipperei) eine One-Click-Lösung aus Android heraus) ... Android Homescreen > Shortcut antippen (One-Click) > OTA vorbereiten > TWRP Recovery > Backup + OTA-Update + (Re-)Rooting > Reboot Android Homescreen > Weiter arbeiten ...
___
 

Anhänge

  • ooo-cmu-v1.txt
    7,9 KB Aufrufe: 298
  • ooo-make-softlink-sdcard1-v1.txt
    111 Bytes Aufrufe: 159
Zuletzt bearbeitet: