Come trovare il percorso della partizione di swap sulla scheda SD?


9

Come questo avverte, non dovresti abilitare lo swap sulla partizione sbagliata o puoi distruggere il tuo telefono:

OK prima di andare oltre! i telefoni precedenti avevano un layout di partizione in cui mmcblck0 era la scheda SD (esterna) il nostro telefono utilizza mmcblck1 per l'sd esterno. Questo è importante perché se usi un'app potrebbe essere preimpostato per usare mmcblck0 come partizione di swap. L'uso di questa impostazione ti farà usare sbl2 o sbl3 come partizione di swap.

Quindi la partizione di swap potrebbe essere /dev/block/mmcblk0p3se ho 3 partizioni (fat32, sdext, swap) sulla mia scheda SD, o /dev/block/mmcblk0p2se ho 2 partizioni (fat43 e swap) o /dev/block/mmcblk1p?se hai un telefono diverso, ecc. E la scelta sbagliata può brickare il tuo telefono.

Come scopri quale partizione è quale? Dovrebbe essere l'unica partizione su qualsiasi unità del telefono con il swapfilesystem.

  • fdisk -lfa questo su Ubuntu , ma non produce nulla in Android
  • blkid non mostra la partizione di swap
  • cat /proc/partitions elenca molte partizioni, ma non indica quale sia lo swap
  • cat /proc/swapselenca solo gli swap già utilizzati
  • cat /proc/mtddice solo dev: size erasesize namee nient'altro
  • ls /dev/block/voldelenca alcune partizioni come 179:64 179:65 179:66, ma non indica quali sono?
  • 4ext recovery lo mostrerà nella tabella delle partizioni ( swap swap 129 MiB), ma non dice il nome dev
  • ...

Anche se non esiste uno strumento da riga di comando per stamparlo direttamente, sicuramente c'è un modo per dedurlo da alcune altre informazioni ??


C'è qualcosa nel tuo /proc/swaps?
ott--

@ ott--: cat /proc/swapsmostra solo il file di swap creato da swapper 2, non la partizione sulla scheda SD
endolith

Come già conosci il dispositivo (SDCard), hai provato a utilizzare mount(senza parametri) per trovare il dispositivo a blocchi corrispondente ( /dev/block/*) e verificarlo rispetto all'elenco di /proc/partitions(o /proc/mtd)? Se non hai altre partizioni sulla tua carta, la tua partizione di swap dovrebbe essere "l'altra che termina con una cifra", a meno che non sia mountindicata voldsolo. In tal caso, potrebbe essere utile confrontare le dimensioni (o rimuovere temporaneamente la scheda per un "diff").
Izzy

Risposte:


8

Ho installato l' app Informazioni disco e nelle opzioni ho abilitato la modalità Esperto e le partizioni non montate . Non dice "swap", ma mostra chiaramente che è l'unica altra partizione sulla scheda SD ed è della giusta dimensione, quindi /dev/block/mmcblk1p2deve essere quella:

screenshot di Informazioni disco

Swapper 2 è configurato per l'uso /dev/block/mmcblk0p3per impostazione predefinita, quindi sono contento di non aver scelto quello predefinito.


8

fdisk -lfunziona se si passa esplicitamente l'intero nome del dispositivo disco (ad es. fdisk -l /dev/block/mmcblk1); ciò che non funziona è il rilevamento automatico dei dispositivi a blocchi (apparentemente perché Android posiziona i file dei dispositivi a blocchi nella /dev/blockdirectory, ma si fdiskaspetta di vederli direttamente /dev). Quindi una possibilità è quella di raccogliere l'elenco dei dispositivi interi dischi ( /dev/block/mmcblk0, /dev/block/mmcblk1, ...) e un'occhiata al loro tabelle di partizione utilizzando . Questi interi dispositivi a disco sono elencati prima delle partizioni corrispondenti.fdisk -l <device>/proc/partitions

L' blkidutilità non esamina affatto la tabella delle partizioni: apre tutti i dispositivi a blocchi noti dal sistema e rileva il tipo di file system dai dati effettivi su tali dispositivi; pertanto blkidnon mostrerà le informazioni corrette per la partizione di swap fino a quando tale partizione non verrà inizializzata da mkswap. Ciò significa che blkidè inutile per l'attività corrente (trovare a quale partizione deve essere passata mkswap).

mountdi solito mostra i dispositivi sotto /dev/block/vold, che sono nominati in base al loro numero maggiore e minore. Per ottenere il solito nome del dispositivo, puoi cercare /proc/partitionsuna riga contenente gli stessi numeri nelle prime due colonne. Quindi è possibile rimuovere la parte dalla fine del nome del dispositivo, aggiungere all'inizio e passare il nome risultante per vedere la tabella delle partizioni del dispositivo corrispondente.p<number>/dev/block/fdisk -l

Attenzione, se si guarda fdisk -lall'output del flash eMMC interno, è possibile trovare molte partizioni con tipi strani, specialmente su dispositivi basati su Qualcomm. Ad esempio, vedere la tabella delle partizioni per 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

I codici del tipo di partizione sono persino pericolosamente sbagliati, perché /dev/block/mmcblk0p1, che viene dichiarato Win95 FAT32 (LBA), in realtà contiene alcuni dati di sistema (inclusi posizioni e hash MD5 di varie parti ROM); tuttavia, /dev/block/mmcblk0p28che è la "memoria interna dei dati" formattata FAT16, ha un tipo che sembra completamente falso. In questo caso il produttore non ha riutilizzato il 0x82codice del tipo (Linux swap) per i propri scopi, ma non sono sicuro che tali collisioni non si verifichino mai, quindi non si dovrebbe tentare ciecamente di usare qualsiasi partizione che assomigli a swap - verificare innanzitutto che le dimensioni del dispositivo e il layout della partizione sono quelli che ti aspetti di vedere sulla tua scheda SD.

/proc/mtd non è mai utile per trovare una partizione di swap su scheda SD (i driver MTD vengono utilizzati per accedere a chip flash grezzi direttamente collegati, non possono funzionare con schede SD esterne).


1
Aha! fdisk -l /dev/block/mmcblk1dice/dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap
endolith
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.