9 votos

¿Cómo encontrar la ruta del archivo de intercambio en la tarjeta SD?

Como este advierte, no debes habilitar el intercambio en la partición incorrecta o podrías destruir tu 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), nuestro teléfono usa mmcblck1 para la tarjeta SD externa. Esto es importante porque si usas una aplicación, puede estar preestablecida para usar mmcblck0 como partición de intercambio. Usar esta configuración hará que uses tu sbl2 o sbl3 como partición de intercambio. Esto convertirá tu teléfono en un ladrillo y la guía para deshacerlo será inútil.

Por lo tanto, la partición de intercambio podría ser /dev/block/mmcblk0p3 si tengo 3 particiones (fat32, sdext, swap) en mi tarjeta SD, o /dev/block/mmcblk0p2 si tengo 2 particiones (fat43 y swap) o /dev/block/mmcblk1p? si tienes un teléfono diferente, etc. y la elección incorrecta puede convertir tu teléfono en un ladrillo.

¿Cómo descubres cuál partición es cuál? Debería ser la única partición en cualquier unidad del teléfono con el sistema de archivos swap.

  • fdisk -l hace esto en Ubuntu, pero no muestra nada en Android
  • blkid no muestra la partición de intercambio
  • cat /proc/partitions lista muchas particiones, pero no indica cuál es la de intercambio
  • cat /proc/swaps solo lista los intercambios que ya están siendo utilizados
  • cat /proc/mtd solo dice dev: size erasesize name y nada más
  • ls /dev/block/vold lista algunas particiones como 179:64 179:65 179:66, ¿pero no indica qué son?
  • La recuperación 4ext lo mostrará en la tabla de particiones (swap swap 129 MiB), pero no menciona el nombre del dispositivo
  • ...

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

0 votos

¿Hay algo en tu /proc/swaps?

0 votos

@ott--: cat /proc/swaps solo muestra el archivo de intercambio creado por swapper 2, no la partición en la tarjeta SD

0 votos

Como ya sabes, ¿has intentado usar mount (sin parámetros) para encontrar el dispositivo de bloque correspondiente (/dev/block/*) y comprobarlo con la lista de /proc/partitions (o /proc/mtd)? Si no tienes más particiones en tu tarjeta, tu partición de intercambio debería ser "la otra que termina con un dígito", a menos que mount apunte solo a vold. En ese caso, comparar tamaños (o quitar temporalmente la tarjeta para un "diff") podría ayudar.

8voto

endolith Puntos 1021

Instalé la aplicación de Disk Info y en las opciones, habilité el modo experto y las particiones desmontadas. No dice "swap", pero muestra claramente que es la única otra partición en la tarjeta SD y es el tamaño correcto, así que /dev/block/mmcblk1p2 debe ser la correcta:

captura de pantalla de Disk Info

Swapper 2 está configurado por defecto para usar /dev/block/mmcblk0p3, así que me alegra no haber ido con el valor por defecto.

8voto

Sergey Vlasov Puntos 1419

fdisk -l funciona si se pasa explícitamente todo el nombre del dispositivo de disco (por ejemplo, fdisk -l /dev/block/mmcblk1); lo que no funciona es el descubrimiento automático de dispositivos de bloques (aparentemente porque Android coloca los archivos de dispositivo de bloque bajo el directorio /dev/block, pero fdisk espera ver esos archivos directamente en /dev). Por lo tanto, una opción es recopilar la lista de dispositivos de disco completos (/dev/block/mmcblk0, /dev/block/mmcblk1, …) y ver sus tablas de particiones usando fdisk -l . Estos dispositivos de disco completos se enumeran en /proc/partitions antes de las particiones correspondientes.

La utilidad blkid 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 lo tanto blkid no mostrará información correcta para la partición de intercambio hasta que esa partición sea inicializada por mkswap. Esto significa que blkid es inútil para tu tarea actual (encontrar qué partición debe ser pasada a mkswap).

mount suele mostrar dispositivos bajo /dev/block/vold, los cuales están nombrados de acuerdo a sus números mayor y menor. Para obtener el nombre de dispositivo usual, puedes buscar en /proc/partitions una fila que contenga los mismos números en las dos primeras columnas. Luego puedes eliminar la parte p del final del nombre del dispositivo, añadir /dev/block/ al principio y pasar el nombre resultante a fdisk -l para ver la tabla de particiones del dispositivo correspondiente.

Nota que si miras la salida de fdisk -l para la memoria flash eMMC interna, es posible que encuentres muchas particiones con tipos extraños, especialmente en dispositivos basados en Qualcomm. Por ejemplo, mira la tabla de particiones para Samsung Galaxy W (GT-I8150):

# fdisk -lu /dev/block/mmcblk0                                  

Disco /dev/block/mmcblk0: 3959 MB, 3959422976 bytes
1 cabezal, 16 sectores/pista, 483328 cilindros, total 7733248 sectores
Unidades = sectores de 1 * 512 = 512 bytes

              Device Boot      Start         End      Blocks  Id System
/dev/block/mmcblk0p1               1      212991      106495+  c Win95 FAT32 (LBA)
La Partición 1 no termina en un límite de cilindro
/dev/block/mmcblk0p2   *      212992      213991         500  4d Unknown
La Partición 2 no termina en un límite de cilindro
/dev/block/mmcblk0p3          213992      221183        3596  46 Unknown
La Partición 3 no termina en un límite de cilindro
/dev/block/mmcblk0p4          221184     7733247     3756032   5 Extended
La Partición 4 no termina en un límite de cilindro
/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 ahí son incluso peligrosamente incorrectos, porque /dev/block/mmcblk0p1, que se declara como Win95 FAT32 (LBA), en realidad contiene algunos datos del sistema (incluyendo ubicaciones y hashes MD5 de varias partes de la ROM); sin embargo, /dev/block/mmcblk0p28, que es el almacenamiento de datos "interno" formateado en FAT16; tiene un tipo que parece completamente erróneo. En este caso, el fabricante no reutilizó el código de tipo 0x82 (intercambio de Linux) para sus propios propósitos, pero no estoy seguro de que dichas colisiones nunca ocurran, así que no debes intentar usar ciegamente ninguna partición que parezca ser de intercambio— primero verifica que el tamaño del dispositivo y la disposición de las particiones sean lo que esperas ver en tu tarjeta SD.

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

1 votos

¡Aha! fdisk -l /dev/block/mmcblk1 dice /dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X