Verwenden Sie die SD-Karte als internen Speicher und hören Sie endgültig auf, in den internen Speicher zu schreiben

Smartphones scheinen nach zwei Jahren Nutzung zu sterben, als wüssten sie, dass man gerade die letzte Rate bezahlt hat.
Der häufigste Grund scheint der Ausfall des internen Speichers zu sein.
Ich versuche verzweifelt, mein Telefon diesem grausamen Schicksal zu entziehen.
Die Idee, die ich anfangs hatte, schien einfach, aber das Internet schien meinen Optimismus nicht zu teilen.
Das ist die Idee:
- erstelle ext4-Partitionen auf der SD-Karte
- mounte beim Booten SD-Karten-Partitionen auf /dataund /cache(und vielleicht /preloadund /efsfalls sie jemals geschrieben werden)

Ich würde gerne wissen, was an dieser Idee falsch ist und warum sie nicht funktionieren kann, aber die Hauptfrage ist:
Kann ich endgültig aufhören, in den internen Speicher zu schreiben?

Ich habe alle Apps da draußen gesehen (app2sd, link2sd, DirecoryBind, s2e , wie Sie es nennen) und alle scheinen Unterverzeichnisse zu verschieben, niemals das Hauptverzeichnis /data.
Jede Hilfe wird sehr geschätzt.
Danke schön!

Willkommen bei den Android-Enthusiasten! Haben Sie die Suchfunktion unserer Website ausprobiert und hinter den verwendeten Tags nachgesehen (die meisten von ihnen haben ein Wiki angehängt)? Diese Frage wurde hier schon öfter gestellt. Außerdem habe ich 2 Android-Telefone, die ich bereits seit 5 Jahren und mehr verwende, mein aktuelles Hauptgerät verwende ich seit etwa 3 Jahren. Nichts ist bisher gestorben (außer einer SD-Karte, die leicht ersetzt werden konnte).
Hallo @Izzy, ich habe viel darüber gefunden, wie man den Speicher erhöht, nichts, was die eigentliche Frage im Titel beantwortet. Das ist genau mein Punkt, es ist einfach, eine SD-Karte wegzuwerfen und zu ersetzen, ich kann nicht dasselbe über ein Telefon sagen
Ich glaube, Android Marshmallow hat diese Funktion eingebaut, aber das ist nicht so relevant für alle anderen, die noch auf Lollipop und älter sind. Hoffentlich kann einigen Usern geholfen werden.
@ LJD200 fast richtig. MM ermöglicht es, beides zusammenzuführen . Aber OP möchte nur das Äußere verwenden und das Innere überhaupt nicht berühren - das geht also nicht.
Habe gerade die NIGHTLY-Version von CyanogenMod 13 (Android 6) geflasht. Ich habe nach 2 Tagen Recherche und nicht reagierenden Foren aufgegeben und angefangen, Videos über das Ersetzen von emmc anzuschauen :-) Ahah! @Izzy, ein einmaliges Schreiben könnte in Ordnung sein, was ich vermeiden möchte, ist ein kontinuierliches Ersetzen von Dateien durch Apps oder Android selbst.
Das würde im Grunde ein DirectoryBind von /datairgendwo auf der externen Karte bedeuten, und das gleiche für /cache. Alles andere ist meist schreibgeschützt.
@Izzy kann ich das mit DirectoryBind machen? Ist das einfach? 2 ext4-Partitionen auf der SD-Karte an /data und /cache gebunden? In der Zwischenzeit beobachte ich, wie sich Android Marshmallow entwickelt. Emulierter Speicher ist in emmc, nicht glücklich!
Ich habe DirectoryBind selbst noch nie verwendet, daher kann ich nicht sagen, wie einfach es in Wirklichkeit ist. Ich weiß nur, dass es aus technischer Sicht möglich ist.
Vor einiger Zeit fand ich diesen Beitrag Mount a folder from external sd as /data und es scheint von allen akzeptiert zu werden. Ich kann es immer noch nicht fassen: Alles, was ich sehen kann, ist, dass die DATA-Partition auf der SD-Karte gemountet wird, Dateien sind immer noch in der Partition gespeichert !! Ich habe bemerkt, dass Sie @Izzy dies sogar in den letzten Tagen als Lösung vorgeschlagen haben
Sieht so aus, als hättest du Recht, Claudio: Es ist nur der Einhängepunkt , der dort drüben ist, und der eigentliche Speicher ist immer noch dort, wo er immer war. Ich würde sagen, platzieren Sie dort einen Kommentar, um darauf hinzuweisen. Aber abgesehen davon hat die Antwort dort drüben nichts mit DirectoryBind zu tun.
Kann nicht kommentieren, nicht genug Ruf. Jede Lösung ist gut für mich, solange sie funktioniert.

Antworten (3)

Eureka!
So habe ich es gemacht:

SD-Karte partitionieren und formatieren

Unsicher, welche Partitionen ich hätte verschieben können, entschied ich mich, meine SD-Karte mit genau dem gleichen Layout wie der interne Speicher meines Samsung Galaxy S III neu zu erstellen.
USERDATAist die letzte partition und dafür gibt es einen guten grund:
meine sd-kartengröße ist größer als der interne speicher und die beste option war es, USERDATAbis zum möglichen weitesten sektor zu erweitern.

Folgende Arbeiten wurden in meinem Linux-PC durchgeführt:

parted /dev/sdb mklabel gpt \
mkpart  BOTA0      ext2     8192s          16383s \
mkpart  BOTA1      ext2    16384s          24575s \
mkpart  EFS        ext2    24576s          65535s \
mkpart  PARAM      ext2    65536s          81919s \
mkpart  BOOT       ext2    81920s          98303s \
mkpart  RECOVERY   ext2    98304s         114687s \
mkpart  RADIO      ext2   114688s         180223s \
mkpart  CACHE      ext2   180224s        2277375s \
mkpart  SYSTEM     ext2  2277376s        5423103s \
mkpart  HIDDEN     ext2  5423104s        6569983s \
mkpart  OTA        ext2  6569984s        6586367s \
mkpart  USERDATA   ext2  6586368s       60749824s

Gut, Partitionen erstellt.
Jetzt imitiere ich immer noch mein Android-Gerät und formatiere Partitionen entsprechend:

# /efs
mkfs.ext4  /dev/sdb3   -E root_owner=1001:1000
# /system
mkfs.ext4  /dev/sdb9   -E root_owner=0:0         -L system
# /cache
mkfs.ext4  /dev/sdb8   -E root_owner=1000:2001
# /preload
mkfs.ext4  /dev/sdb10  -E root_owner=0:0
# /data
mkfs.ext4  /dev/sdb12  -E root_owner=1000:1000

Die SD-Karte ist bereit, jetzt kann ich Dateien von emmc auf die entsprechende SD-Kartenpartition "sichern", wobei ich darauf achte, die Dateiattribute beizubehalten.

Bearbeitenfstab

In den nicht allzu alten Versionen von Android fstabscheint sich die Datei immer unter zu befinden /.
Dateien in /werden in der BOOTPartition ( boot.img) gespeichert;
Es ist an der Zeit zu lernen, die boot.img.
Hier sind zwei sehr hilfreiche Tutorials, die Ihnen den Einstieg erleichtern:
HOWTO: Boot-Images entpacken, bearbeiten und neu
packen Android boot.img-Manipulation
ein kleiner Hinweis:
Bearbeiten Sie die Ramdisk in Ihrem Android-Gerät.
Ich habe drei Tage frustriert damit verbracht, dies in meinem PC zu versuchen, ich denke, es ist eine Frage der "Endianness".

Sortieren Sie beim Bearbeiten der Ramdisk name-list(Standardeingabe) nach cpio.
Ich verbrachte drei Jahre damit, zufällig wiederkehrende Fehler zu frustrieren.


Mein fstabVorher:

/dev/block/mmcblk0p3        /efs            ext4        noatime,nosuid,nodev,journal_async_commit,errors=panic      wait
/dev/block/mmcblk0p9        /system         ext4        ro,noatime      wait
/dev/block/mmcblk0p8        /cache          ext4        noatime,nosuid,nodev,journal_async_commit,errors=panic      wait
/dev/block/mmcblk0p10       /preload        ext4        noatime,nosuid,nodev,journal_async_commit       wait
/dev/block/mmcblk0p12       /data           ext4        noatime,nosuid,nodev,noauto_da_alloc,journal_async_commit,errors=panic      wait,check,encryptable=footer

Mein fstabdanach:

/dev/block/mmcblk0p3        /efs            ext4        noatime,nosuid,nodev,journal_async_commit,errors=panic      wait
/dev/block/mmcblk1p9        /system         ext4        ro,noatime      wait
/dev/block/mmcblk1p8        /cache          ext4        noatime,nosuid,nodev,journal_async_commit,errors=panic      wait
/dev/block/mmcblk1p10       /preload        ext4        noatime,nosuid,nodev,journal_async_commit       wait
/dev/block/mmcblk1p12       /data           ext4        noatime,nosuid,nodev,noauto_da_alloc,journal_async_commit,errors=panic      wait,check,encryptable=footer

Ich habe nur die Blocknummer geändert (von 0 auf 1).
Ich konnte mich noch nicht trauen, umzuziehen EFS, jemand sagte, dass Sie das Gerät irgendwie mauern könnten, indem Sie damit herumspielen und das Thema noch studieren; Ich weiß, dass Android weiter schreibt EFS(ich überwache es).

Schlussfolgerungen und weitere Fragen

Auf diese Weise habe ich die meisten meiner internen Speicherdaten auf meine externe SD-Karte verschoben.
Die Dinge sind erwartungsgemäß etwas träge, aber Android scheint perfekt zu funktionieren;
Ich kann in Zukunft immer in eine schnellere SD-Karte investieren.
Ich habe das alles mit meinem Samsung Galaxy S III Stock ROM gemacht, Sie müssen sich natürlich an Ihre Umstände anpassen.
Als ich schließlich CyanogenMod 13 installierte (wir wollen doch keine Stock-Firmware, oder!?), war das ein bisschen anders.
Mit einem Wiped /dataverbringt CM einige Zeit mit dem Auffüllen des Bootvorgangs /dataund an einem bestimmten Punkt gibt es einfach auf, startet neu und wechselt in den Wiederherstellungsmodus.
Nach mehreren Versuchen habe ich aufgegeben und /systemin den internen Speicher verschoben, jetzt ist alles in Ordnung.
Ich weiß das/systemist als schreibgeschützt gemountet, aber mir ist aufgefallen, dass die emmc-Lebensdauer als Anzahl der Lese-/Schreibzyklen definiert ist, was möglicherweise darauf hindeutet, dass das Lesen im Gegensatz zu Festplatten genauso schädlich ist wie das Schreiben.
Wenn das der Fall ist, wäre ich sehr dankbar, wenn mir jemand sagen könnte, warum ich in CM nicht erfolgreich umziehen kann /system.

Was ist der Performance-Hit?
Hallo @Jonathan, es ist schon eine Weile her. Wie gesagt, die Dinge liefen ziemlich schleppend, es ging mir manchmal auf die Nerven und am Ende installierte ich auf traditionelle Weise ein frisches Betriebssystem neu. Ich habe eine Kingston 32 GB Micro SD U1 HC I Class 10 für 5 £ verwendet, vielleicht würde es ausreichen, in eine Karte mit höheren Spezifikationen zu investieren. Lassen Sie uns wissen, wie es für Sie läuft. Übrigens, mein Handy wird bald 7 Jahre alt und, Daumen drücken, es ist immer noch gesund 🥳

@Claudio Sie haben ein sehr gutes Anliegen geäußert. Mit etwas eingebettetem Wissen kann ich eine Vorstellung davon geben:

Wenn Sie ein Gerät einschalten, wird es so programmiert, dass es von einem bestimmten Speicherort startet. Dieser Speicherplatz ist mit dem internen Speicher fest verdrahtet .

Normalerweise haben wir in Demo- Embedded-Geräten einen kleinen Schalter, mit dem wir zwischen verschiedenen BOOT-Geräten umschalten können - es kann sich um einen internen, externen oder sogar seriellen Anschluss handeln.

In Produktions- oder kommerziellen Geräten wird dieser Schalter jedoch entfernt.

Es ist also nahezu unmöglich, direkt von einem externen Speicher zu booten.

Ich wünschte, einige Unternehmen könnten eine Option (wie einen Schalter) bereitstellen, um von einem externen Speicher zu booten, selbst wenn der interne Speicher schief geht.

Das wird nie passieren ... Das Laden und Booten von beliebigem Code (zwei getrennte Dinge, die beide schwer zu erreichen sind) so viel einfacher zu machen, ist nur, ihre früheren Bemühungen, ihn zu sperren, zu beseitigen.
Danke @kumar für dieses nützliche Wissen. boot.imgVielleicht war es in meiner Beschreibung nicht offensichtlich, aber ich wollte nie an einem anderen Ort als dem emmc suchen

Ich konnte erfolgreich von der SD-Karte auf QMobile Z8 booten durch:

  • Replizieren der eMMC-Partitionstabelle durch Partitionieren der SD-Karte auf einem Ubuntu-Rechner mit partedundfdisk
  • Flashen von Werks-Firmware-Images auf diese neu erstellten Partitionen mitdd
  • Ändern der Dateien fstab.qcom und init.tegra.rc im Kernel ( boot.img) und der Dateien recovery.fstab und evenetd.rc in der TWRP-Wiederherstellung, um das Mounten und Booten von der SD-Karte anstelle des internen Speichers zu initiieren

Es war nach einigen Versuchen erfolgreich. Ich denke, diese Methode sollte auf jedes Gerät mit ähnlicher Konfiguration anwendbar sein. Die zu bearbeitenden Dateien können jedoch von Gerät zu Gerät variieren.

Wenn Sie nur die externen Daten von Apps auf die SD-Karte und nicht die gesamte Partition übertragen möchten, können Sie fstab in boot.img und die Speicherliste in framework-res.apk unter Android 5 und älter bearbeiten.

Weitere Einzelheiten: [ERFOLGREICH] BOOTEN VON SD-KARTE auf QMobile Z8 mit BRICKED/DEAD eMMC