Comment trouver le chemin d'accès de la partition de swap sur la carte SD?

9

Comme cela vous prévient, vous ne devez pas activer l'échange sur la mauvaise partition ou vous pouvez détruire votre téléphone:

OK avant d'aller plus loin! les téléphones précédents avaient une disposition de partition où mmcblck0 était la carte SD (externe) notre téléphone utilise mmcblck1 pour le sd externe. Ceci est important car si vous utilisez une application, il peut être prédéfini pour utiliser mmcblck0 comme partition de swap. En utilisant ce paramètre, vous utiliserez votre sbl2 ou sbl3 comme partition de swap.

Donc, la partition de swap peut être /dev/block/mmcblk0p3si j'ai 3 partitions (fat32, sdext, swap) sur ma carte SD, ou /dev/block/mmcblk0p2si j'ai 2 partitions (fat43 et swap) ou /dev/block/mmcblk1p?si vous avez un téléphone différent, etc. et le mauvais choix peut brique ton téléphone.

Comment savoir quelle partition est laquelle? Ce devrait être la seule partition sur n'importe quel lecteur du téléphone avec le swapsystème de fichiers.

  • fdisk -lfait cela sur Ubuntu , mais ne produit rien dans Android
  • blkid n'affiche pas la partition de swap
  • cat /proc/partitions répertorie un grand nombre de partitions, mais n'indique pas quel est l'échange
  • cat /proc/swapsrépertorie uniquement les swaps déjà utilisés
  • cat /proc/mtddit seulement dev: size erasesize nameet rien d'autre
  • ls /dev/block/voldrépertorie certaines partitions en tant que 179:64 179:65 179:66, mais n'indique pas ce qu'elles sont?
  • La récupération 4ext l'affichera dans le tableau des partitions ( swap swap 129 MiB), mais ne dit pas le nom du développeur
  • ...

Même s'il n'y a pas d'outil de ligne de commande pour l'imprimer directement, il y a sûrement un moyen de le déduire d'autres informations ??

endolith
la source
Y a-t-il quelque chose en toi /proc/swaps?
ott--
@ ott--: cat /proc/swapsmontre juste le fichier d'échange créé par swapper 2, pas la partition sur la carte SD
endolith
Comme vous connaissez déjà le périphérique (SDCard), avez-vous essayé d'utiliser mount(sans paramètres) pour trouver le périphérique de bloc correspondant ( /dev/block/*) et vérifier cela par rapport à la liste de /proc/partitions(ou /proc/mtd)? Si vous avez aucune partition plus sur votre carte, votre partition swap doit être « l'autre se terminant par un chiffre », à moins mountpointu voldque. Dans ce cas, la comparaison des tailles (ou le retrait temporaire de la carte pour un "diff") pourrait aider.
Izzy

Réponses:

8

J'ai installé l' application Disk Info et dans les options, j'ai activé le mode Expert et les partitions non montées . Il ne dit pas "swap", mais il montre clairement que c'est la seule autre partition sur la carte SD et que c'est la bonne taille, donc ça /dev/block/mmcblk1p2doit être celle-ci:

capture d'écran des informations sur le disque

Swapper 2 est configuré pour utiliser /dev/block/mmcblk0p3par défaut, donc je suis content de ne pas avoir choisi la valeur par défaut.

endolith
la source
8

fdisk -lfonctionne si vous passez explicitement le nom complet du périphérique de disque (par exemple, fdisk -l /dev/block/mmcblk1); ce qui ne fonctionne pas est la découverte automatique des périphériques bloqués (apparemment parce qu'Android place les fichiers des périphériques bloqués dans le /dev/blockrépertoire, mais fdisks'attend à voir ces fichiers directement dans /dev). Par conséquent , une option est de recueillir la liste des périphériques de disques entiers ( /dev/block/mmcblk0, /dev/block/mmcblk1...) et de regarder leurs tables de partition à l' aide . Ces unités de disque entières sont répertoriées avant les partitions correspondantes.fdisk -l <device>/proc/partitions

L' blkidutilitaire ne regarde pas du tout la table de partition - il ouvre tous les périphériques de bloc connus du système et détecte le type de système de fichiers à partir des données réelles sur ces périphériques; blkidn'affichera donc pas les informations correctes pour la partition de swap tant que cette partition n'aura pas été initialisée par mkswap. Cela signifie que cela blkidest inutile pour votre tâche actuelle (trouver la partition à transmettre mkswap).

mountaffiche généralement les périphériques sous /dev/block/vold, qui sont nommés en fonction de leur numéro majeur et mineur. Pour obtenir le nom de périphérique habituel, vous pouvez rechercher /proc/partitionsune ligne contenant les mêmes numéros dans les deux premières colonnes. Ensuite, vous pouvez supprimer la partie de la fin du nom du périphérique, ajouter au début et passer le nom résultant pour voir la table de partition du périphérique correspondant.p<number>/dev/block/fdisk -l

Sachez que si vous regardez la fdisk -lsortie du flash eMMC interne, vous pouvez trouver de nombreuses partitions avec des types étranges, en particulier sur les appareils basés sur Qualcomm. Par exemple, consultez la table de partition pour 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

Les codes de type de partition sont même dangereusement erronés, car /dev/block/mmcblk0p1, qui est déclaré Win95 FAT32 (LBA), contient en fait certaines données système (y compris les emplacements et les hachages MD5 de diverses parties de la ROM); cependant, /dev/block/mmcblk0p28qui est le «stockage de données interne» au format FAT16, a un type qui semble complètement faux. Dans ce cas, le fabricant n'a pas réutilisé le 0x82code de type (échange Linux) à ses propres fins, mais je ne suis pas sûr que de telles collisions ne se produisent jamais, vous ne devez donc pas essayer aveuglément d'utiliser une partition qui ressemble à un échange - vérifiez d'abord que la taille de l'appareil et la disposition des partitions sont ce que vous attendez de voir sur votre carte SD.

/proc/mtd n'est jamais utile pour trouver une partition de swap sur la carte SD (les pilotes MTD sont utilisés pour accéder aux puces flash brutes directement connectées, ils ne peuvent pas fonctionner avec des cartes SD externes).

Sergey Vlasov
la source
1
Ah! fdisk -l /dev/block/mmcblk1dit/dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap
endolith