¿Cómo encontrar el nombre de ruta de la partición de intercambio en la tarjeta SD?

9

Como esto advierte, no debe habilitar el intercambio en la partición incorrecta o puede destruir su teléfono:

OK antes de continuar! los teléfonos anteriores tenían un diseño de partición donde mmcblck0 era la tarjeta SD (externa) que nuestro teléfono usa mmcblck1 para el sd externo. Esto es importante porque si usa una aplicación, puede estar preestablecido para usar mmcblck0 como partición de intercambio. El uso de esta configuración hará que use su sbl2 o sbl3 como partición de intercambio.

Entonces, la partición de intercambio podría ser /dev/block/mmcblk0p3si tengo 3 particiones (fat32, sdext, swap) en mi tarjeta SD, o /dev/block/mmcblk0p2si tengo 2 particiones (fat43 y swap) o /dev/block/mmcblk1p?si tiene un teléfono diferente, etc. y la elección incorrecta puede bloquearse su teléfono.

¿Cómo saber qué partición es cuál? Debe ser la única partición en cualquier unidad del teléfono con el swapsistema de archivos.

  • fdisk -lhace esto en Ubuntu , pero no muestra nada en Android
  • blkid no muestra la partición de intercambio
  • cat /proc/partitions enumera muchas particiones, pero no indica cuál es el intercambio
  • cat /proc/swapssolo enumera los intercambios que ya se están utilizando
  • cat /proc/mtdsolo dice dev: size erasesize namey nada mas
  • ls /dev/block/voldenumera algunas particiones como 179:64 179:65 179:66, pero no indica cuáles son?
  • 4ext recovery lo mostrará en la tabla de particiones ( swap swap 129 MiB), pero no dice el nombre del desarrollador
  • ...

Incluso si no hay una herramienta de línea de comandos para imprimirlo directamente, ¿seguramente hay una manera de deducirlo de otra información?

endolito
fuente
¿Hay algo en tu /proc/swaps?
ott--
@ ott--: cat /proc/swapssolo muestra el swapfile creado por swapper 2, no la partición en la tarjeta SD
endolith
Como ya conoce el dispositivo (SDCard), ¿ha intentado usar mount(sin parámetros) para encontrar el dispositivo de bloqueo correspondiente ( /dev/block/*) y compararlo con la lista de /proc/partitions(o /proc/mtd)? Si no tiene más particiones en su tarjeta, su partición de intercambio debe ser "la otra que termina con un dígito", a menos mountque voldsolo se indique . En ese caso, podría ser útil comparar tamaños (o quitar temporalmente la tarjeta para un "diff").
Izzy

Respuestas:

8

Instalé la aplicación Disk Info y en las opciones, habilité el modo experto y las particiones desmontadas . No dice "intercambiar", pero muestra claramente que es la única otra partición en la tarjeta SD y tiene el tamaño correcto, por lo que /dev/block/mmcblk1p2debe ser la única:

captura de pantalla de la información del disco

Swapper 2 está configurado para usar /dev/block/mmcblk0p3de manera predeterminada, por lo que me alegro de no haber elegido el predeterminado.

endolito
fuente
8

fdisk -lfunciona si pasa el nombre completo del dispositivo de disco explícitamente (por ejemplo, fdisk -l /dev/block/mmcblk1); lo que no funciona es el descubrimiento automático de dispositivos de bloque (aparentemente porque Android coloca los archivos de dispositivos de bloque en el /dev/blockdirectorio, pero fdiskespera ver esos archivos directamente /dev). Por lo tanto, una opción es recoger la lista de discos enteros ( /dev/block/mmcblk0, /dev/block/mmcblk1, ...) y la mirada en sus tablas de particiones utilizando . Estos dispositivos de disco completos se enumeran antes de las particiones correspondientes.fdisk -l <device>/proc/partitions

La blkidutilidad no mira la tabla de particiones en absoluto: abre todos los dispositivos de bloque conocidos por el sistema y detecta el tipo de sistema de archivos a partir de los datos reales en esos dispositivos; por blkidlo tanto , no mostrará la información correcta para la partición de intercambio hasta que se inicialice esa partición mkswap. Esto significa que blkides inútil para su tarea actual (encontrar a qué partición se debe pasar mkswap).

mountgeneralmente muestra dispositivos debajo /dev/block/vold, que se nombran de acuerdo con sus números mayores y menores. Para obtener el nombre habitual del dispositivo, puede buscar /proc/partitionsuna fila que contenga los mismos números en las dos primeras columnas. Luego, puede eliminar la parte del final del nombre del dispositivo, agregar al inicio y pasar el nombre resultante para ver la tabla de particiones del dispositivo correspondiente.p<number>/dev/block/fdisk -l

Tenga en cuenta que si observa la fdisk -lsalida del flash eMMC interno, puede encontrar muchas particiones con tipos extraños, especialmente en dispositivos basados ​​en Qualcomm. Por ejemplo, vea la tabla de particiones para 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

Los códigos de tipo de partición incluso son peligrosamente incorrectos porque /dev/block/mmcblk0p1, según se declara Win95 FAT32 (LBA), en realidad contiene algunos datos del sistema (incluidas las ubicaciones y los hash MD5 de varias partes de la ROM); sin embargo, /dev/block/mmcblk0p28que es el "almacenamiento de datos interno" con formato FAT16, tiene un tipo que parece completamente falso. En este caso, el fabricante no reutilizó el 0x82código de tipo (intercambio de Linux) para sus propios fines, pero no estoy seguro de que tales colisiones nunca ocurran, por lo que no debe intentar ciegamente usar ninguna partición que parezca intercambio - primero verifique que el tamaño del dispositivo y el diseño de la partición son lo que espera ver en su tarjeta SD.

/proc/mtd nunca es útil para encontrar una partición de intercambio en la tarjeta SD (los controladores MTD se usan para acceder a chips flash crudos conectados directamente, no pueden funcionar con tarjetas SD externas).

Sergey Vlasov
fuente
1
¡Ajá! fdisk -l /dev/block/mmcblk1dice/dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap
endolith