Grundlegende Frage zum Flashen von Nandroid-Backups

Ich möchte wissen, dass, wenn wir bestimmte Partitionsimages (z. B. system.img, data.img, cache.img usw.) flashen, die Software dann weiß, wo genau diese Partitionsbytes abgelegt werden sollen. Wenn ich zum Beispiel system.img flashe, welchen CHS/LBA-Sektor wird es als Anfang dieses Blocks betrachten? Wenn es auf den MBR/EBR1-Tabellen basiert, was passiert, wenn ich auch den MBR/EBR1 flashe?

Der Grund, warum ich frage, ist, dass ich die Partitionierung in EBR1 geringfügig ändern möchte, sodass der Partition mehr Speicherplatz zugewiesen wird /dataals /sdcard. Ich habe ein altes, aber gut konditioniertes MediaTek (MTK-6577)-basiertes Smartphone namens Karbonn-A30, das in der Verarbeitungsqualität und in fast allen anderen Aspekten großartig ist, aber nur 500 MB internen Speicher (Partition in Linux-Jargon) /datahat ist nicht gut genug für Apps. Derzeit sind die MBR- und EBR1-Partitionen wie folgt:

$disktype MBR
--- MBR
Regular file, size 512 bytes
DOS/MBR partition map
Partition 1: 2.000 TiB (2199023255040 bytes, 4294967295 sectors from 1024)
  Type 0x05 (Extended)
Partition 2: 10 MiB (10485760 bytes, 20480 sectors from 18432)
  Type 0x83 (Linux)
Partition 3: 10 MiB (10485760 bytes, 20480 sectors from 38912)
  Type 0x83 (Linux)
Partition 4: 650 MiB (681574400 bytes, 1331200 sectors from 113152)
  Type 0x83 (Linux)


$disktype EBR1
--- EBR1
Regular file, size 512 bytes
DOS/MBR partition map
Partition 1: 376 MiB (394264576 bytes, 770048 sectors from 1443328)
  Type 0x83 (Linux)
Partition 2: 1.293 GiB (1388314624 bytes, 2711552 sectors from 2213376)
  Type 0x83 (Linux)
Partition 3: 1.998 TiB (2196501691904 bytes, 4290042367 sectors from 4924928)
  Type 0x83 (Linux)

Warum diese letzte Partition, die entspricht, /sdcardso groß gelassen wird (1,998 TiB), entzieht sich meinem Verständnis! Da auf meiner eigentlichen /sdcardPartition gut 2,5 GB Speicherplatz verfügbar sind, habe ich überlegt, ob ich die EBS1 ändern und die LBA-Adressierung so ändern kann, dass die dritte Partition mit 2097152 zusätzlichen Sektoren beginnt (was 1024 MB oder 1 GB entspricht, was gut genug ist für mich), wird meine /dataPartition automatisch um 1 GB erhöht und /sdcardentsprechend um 1 GB verringert? Auf XDA und anderen Foren habe ich gelesen, dass Leute diesen Mod erfolgreich durchgeführt und die Änderung der Partitionsgröße erreicht haben, aber ich möchte zuerst verstehen, wie es passiert.

Antworten (1)

Da ich ein MTK-6577-basiertes Telefon habe und mich kürzlich mit der Reparatur einer kaputten Partitionstabelle befassen musste, dachte ich, ich würde versuchen, dies zu beantworten.

Ich möchte wissen, dass, wenn wir bestimmte Partitionsimages (z. B. system.img, data.img, cache.img usw.) flashen, die Software dann weiß, wo genau diese Partitionsbytes abgelegt werden sollen.

Wenn Sie auf bekannte Einhängepunkte flashen, /system, /data, /cachemüssen Sie die zugrunde liegende Struktur nicht kennen, es ist einfach genug Platz vorhanden und es ist im richtigen Format (z. B. ext4). Die Einhängepunkte sind in angegeben vold.fstab.

Wenn Sie jedoch ein Flash-Tool auf niedriger Ebene wie SP Flash verwenden , müssen Sie auch die zugehörige Scatter-Datei an das neue Layout der Partitionen anpassen, da sie direkt auf die Speicheradressen für die Partitionen zugreift.

Ein Beispiel für Dateisystem-Mount-Punkte für den MT-6577 (kopiert von /tmp/recovery.log):

CWM-based Recovery v6.0.2.8
recovery filesystem table
=========================
  0 /tmp ramdisk (null) (null) 0
  1 /boot emmc /dev/bootimg (null) 0
  2 /cache ext4 /dev/block/mmcblk0p4 (null) 0
  3 /data ext4 /dev/block/mmcblk0p5 (null) 0
  4 /misc emmc /dev/misc (null) 0
  5 /recovery emmc /dev/recovery (null) 0
  6 /emmc vfat /dev/block/mmcblk0p6 (null) 0
  7 /system ext4 /dev/block/mmcblk0p3 (null) 0
  8 /sdcard vfat /dev/block/mmcblk1p1 /dev/block/mmcblk1 0
  9 /sd-ext auto /dev/block/mmcblk1p2 (null) 0

Warum diese letzte Partition, die /sdcard entspricht, so groß bleibt (1,998 TiB), entzieht sich meinem Verständnis

Dies ist ein Ergebnis der Verwendung von GPTvs. älteren MBRPartitionstabellen. Es ist eine spezielle erweiterte Partition, die den maximalen 32-Bit-Adressbereich (2 TB) umfasst. Es ermöglicht das Laden des MBR auf jedes Gerät, unabhängig von seiner internen Speichergröße. Dann haben Sie für jedes Modell maßgeschneiderte EBR1(und EBR2) Maßanfertigungen.

Ich dachte, wenn ich das EBS1 ändern und die LBA-Adressierung so ändern kann, dass die dritte Partition mit 2097152 zusätzlichen Sektoren beginnt (was 1024 MB oder 1 GB entspricht, was für mich gut genug ist), wird es meine /data-Partition automatisch um 1 GB erhöhen und Verringern Sie die /sdcard entsprechend um 1 GB

Bei den Einzelheiten bin ich mir nicht ganz sicher.

Stattdessen habe ich die Partitionsgrößen von /dataund /emmcmit einer EBR1auf xda-developers.com bereitgestellten vertauscht . Verwenden Sie dann in Android die Link2SD- App, die eine 2-GB-ext4-Partition auf der externen SD-Karte verwendet, und verschieben Sie große Apps.

Ich dachte nur, ich würde hinzufügen, dass Sie, wenn etwas spektakulär schief geht, wie es ursprünglich bei mir der Fall war, eine Wiederherstellung durchführen können, indem Sie Backups des Originals MBRund ERB1Dateien verwenden, um adb shellsich im Wiederherstellungsmodus mit Ihrem Telefon zu verbinden.

Partitionsdetails wiederherstellen:

dd if=/tmp/MBR of=/dev/block/mmcblk0
dd if=/tmp/EBR1 of=/dev/block/mmcblk0p1

Oh und um überhaupt ein Backup manuell zu erstellen:

dd if=/dev/block/mmcblk0 of=/tmp/MBR bs=512 count=1
dd if=/dev/block/mmcblk0p1 of=/tmp/ERB1 bs=512 count=1

Mounten Sie eine externe SD-Karte von CWM und Sie können die Datei nach/von kopieren /sdcard.