Wie finde ich den Pfadnamen der Swap-Partition auf der SD-Karte?

9

Da dies warnt, sollten Sie den Austausch auf der falschen Partition nicht aktivieren, da Sie sonst Ihr Telefon zerstören können:

OK, bevor wir weiter gehen! Vorherige Telefone hatten ein Partitionslayout, bei dem mmcblck0 die SD-Karte (extern) war. Unser Telefon verwendet mmcblck1 für die externe SD. Dies ist wichtig, da bei Verwendung einer App möglicherweise die Verwendung von mmcblck0 als Swap-Partition voreingestellt ist. Wenn Sie diese Einstellung verwenden, verwenden Sie sbl2 oder sbl3 als Swap-Partition. Dadurch wird Ihr Telefon blockiert und die Unbrick-Anleitung wird verwendet.

Die Swap-Partition kann also sein, /dev/block/mmcblk0p3wenn ich 3 Partitionen (fat32, sdext, swap) auf meiner SD-Karte habe oder /dev/block/mmcblk0p2wenn ich 2 Partitionen (fat43 und swap) habe oder /dev/block/mmcblk1p?wenn Sie ein anderes Telefon usw. haben und die falsche Wahl blockieren kann dein Telefon.

Wie finden Sie heraus, welche Partition welche ist? Es sollte die einzige Partition auf einem Laufwerk des Telefons mit dem swapDateisystem sein.

  • fdisk -ltut dies unter Ubuntu , gibt aber nichts in Android aus
  • blkid zeigt die Swap-Partition nicht an
  • cat /proc/partitions listet viele Partitionen auf, gibt aber nicht an, welche der Swap ist
  • cat /proc/swapslistet nur Swaps auf, die bereits verwendet werden
  • cat /proc/mtdsagt nur dev: size erasesize nameund sonst nichts
  • ls /dev/block/voldlistet einige Partitionen als auf 179:64 179:65 179:66, gibt aber nicht an, was sie sind?
  • Die 4ext-Wiederherstellung zeigt es in der Tabelle der Partitionen ( swap swap 129 MiB) an, sagt aber nicht den Entwicklernamen
  • ...

Auch wenn es kein Kommandozeilen-Tool gibt, um es direkt zu drucken, gibt es doch eine Möglichkeit, es aus anderen Informationen abzuleiten?

Endolith
quelle
Ist etwas in deinem /proc/swaps?
ott--
@ ott--: cat /proc/swapszeigt nur die von Swapper 2 erstellte Swap-Datei, nicht die Partition auf der SD-Karte
Endolith
Haben Sie, wie Sie das Gerät (SDCard) bereits kennen, versucht, mount(ohne Parameter) das entsprechende Blockgerät ( /dev/block/*) zu finden und dies anhand der Liste von /proc/partitions(oder /proc/mtd) zu überprüfen ? Wenn Sie keine weitere Partition auf Ihrer Karte haben, sollte Ihre Swap-Partition "die andere sein, die mit einer Ziffer endet", sofern nicht nur mountdarauf hingewiesen wird vold. In diesem Fall kann ein Vergleich der Größen (oder ein vorübergehendes Entfernen der Karte für einen "Unterschied") hilfreich sein.
Izzy

Antworten:

8

Ich habe die Disk Info-App installiert und in den Optionen den Expertenmodus und nicht gemountete Partitionen aktiviert . Es heißt nicht "Swap", aber es zeigt deutlich, dass es die einzige andere Partition auf der SD-Karte ist und die richtige Größe hat, also /dev/block/mmcblk1p2muss es die folgende sein:

Screenshot von Disk Info

Swapper 2 ist /dev/block/mmcblk0p3standardmäßig konfiguriert , daher bin ich froh, dass ich mich nicht für die Standardeinstellung entschieden habe.

Endolith
quelle
8

fdisk -lfunktioniert, wenn Sie den gesamten Namen des Festplattengeräts explizit übergeben (z. B. fdisk -l /dev/block/mmcblk1); Was nicht funktioniert, ist die automatische Erkennung von Blockgeräten (anscheinend, weil Android Blockgerätedateien unter dem /dev/blockVerzeichnis fdiskablegt , aber erwartet, dass diese Dateien direkt angezeigt werden /dev). Daher ist eine Option, um die Liste der gesamten Plattengeräte (zu sammeln /dev/block/mmcblk0, /dev/block/mmcblk1...) und Blick auf ihre Partitionstabellen verwendet . Diese gesamten Festplattengeräte werden vor den entsprechenden Partitionen aufgelistet .fdisk -l <device>/proc/partitions

Das blkidDienstprogramm überprüft die Partitionstabelle überhaupt nicht. Es öffnet alle dem System bekannten Blockgeräte und erkennt den Dateisystemtyp anhand der tatsächlichen Daten auf diesen Geräten. Daher blkidwerden keine korrekten Informationen für die Swap-Partition angezeigt, bis diese Partition von initialisiert wurde mkswap. Dies bedeutet, dass dies blkidfür Ihre aktuelle Aufgabe unbrauchbar ist (Finden, an welche Partition übergeben werden soll mkswap).

mountIn der Regel werden Geräte unter angezeigt /dev/block/vold, die nach ihrer Haupt- und Nebennummer benannt sind. Um den üblichen Gerätenamen zu erhalten, können Sie /proc/partitionsin den ersten beiden Spalten nach einer Zeile mit denselben Nummern suchen . Anschließend können Sie das Teil vom Ende des Gerätenamens entfernen , am Anfang hinzufügen und den resultierenden Namen übergeben, um die Partitionstabelle des entsprechenden Geräts anzuzeigen.p<number>/dev/block/fdisk -l

Beachten Sie, dass Sie beim Betrachten der fdisk -lAusgabe für den internen eMMC-Flash möglicherweise viele Partitionen mit seltsamen Typen finden, insbesondere auf Qualcomm-basierten Geräten. Siehe z. B. die Partitionstabelle für Samsung Galaxy W (GT-I8150):

# fdisk -lu /dev/block/mmcblk0                                  

Disk /dev/block/mmcblk0: 3959 MB, 3959422976 bytes
1 heads, 16 sectors/track, 483328 cylinders, total 7733248 sectors
Units = sectors of 1 * 512 = 512 bytes

              Device Boot      Start         End      Blocks  Id System
/dev/block/mmcblk0p1               1      212991      106495+  c Win95 FAT32 (LBA)
Partition 1 does not end on cylinder boundary
/dev/block/mmcblk0p2   *      212992      213991         500  4d Unknown
Partition 2 does not end on cylinder boundary
/dev/block/mmcblk0p3          213992      221183        3596  46 Unknown
Partition 3 does not end on cylinder boundary
/dev/block/mmcblk0p4          221184     7733247     3756032   5 Extended
Partition 4 does not end on cylinder boundary
/dev/block/mmcblk0p5          229376      239615        5120  47 Unknown
/dev/block/mmcblk0p6          245760      285759       20000  49 Unknown
/dev/block/mmcblk0p7          286720      292863        3072  58 Unknown
/dev/block/mmcblk0p8          294912      306175        5632  48 Unknown
/dev/block/mmcblk0p9          311296      324271        6488  50 Unknown
/dev/block/mmcblk0p10         327680      333823        3072  4a Unknown
/dev/block/mmcblk0p11         335872      342015        3072  4b Unknown
/dev/block/mmcblk0p12         344064      360447        8192  90 Unknown
/dev/block/mmcblk0p13         360448      375807        7680  91 Unknown
/dev/block/mmcblk0p14         376832      387071        5120  92 Unknown
/dev/block/mmcblk0p15         393216     1488895      547840  93 Unknown
/dev/block/mmcblk0p16        1490944     1613823       61440  94 Unknown
/dev/block/mmcblk0p17        1613824     3887103     1136640  95 Unknown
/dev/block/mmcblk0p18        3891200     3993599       51200  96 Unknown
/dev/block/mmcblk0p19        3997696     3998695         500  97 Unknown
/dev/block/mmcblk0p20        4005888     4013079        3596  98 Unknown
/dev/block/mmcblk0p21        4014080     4024319        5120  99 Unknown
/dev/block/mmcblk0p22        4030464     4070463       20000  9a Unknown
/dev/block/mmcblk0p23        4071424     4081663        5120  9b Unknown
/dev/block/mmcblk0p24        4087808     4101807        7000  9c Unknown
/dev/block/mmcblk0p25        4104192     4114431        5120  9d Unknown
/dev/block/mmcblk0p26        4120576     4130815        5120  9e Unknown
/dev/block/mmcblk0p27        4136960     4147199        5120  9f BSD/OS
/dev/block/mmcblk0p28        4153344     7733247     1789952  a0 Thinkpad hibernation

Dort sind Partitionstypcodes sogar gefährlich falsch, da sie /dev/block/mmcblk0p1deklariert sind Win95 FAT32 (LBA)und tatsächlich einige Systemdaten enthalten (einschließlich Speicherorte und MD5-Hashes verschiedener ROM-Teile); Bei /dev/block/mmcblk0p28dem FAT16-formatierten „internen Datenspeicher“ handelt es sich jedoch um einen Typ, der völlig falsch aussieht. In diesem Fall hat der Hersteller den 0x82Typcode (Linux-Swap) nicht für eigene Zwecke wiederverwendet , aber ich bin mir nicht sicher, ob solche Kollisionen niemals auftreten. Sie sollten daher nicht blind versuchen, eine Partition zu verwenden, die wie Swap aussieht. Überprüfen Sie dies zuerst Die Gerätegröße und das Partitionslayout entsprechen den Erwartungen auf Ihrer SD-Karte.

/proc/mtd ist niemals nützlich, um eine Swap-Partition auf einer SD-Karte zu finden (MTD-Treiber werden verwendet, um auf direkt angeschlossene Raw-Flash-Chips zuzugreifen, sie können nicht mit externen SD-Karten arbeiten).

Sergey Vlasov
quelle
1
Aha! fdisk -l /dev/block/mmcblk1sagt/dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap
Endolith