Como encontrar o nome do caminho da partição swap no cartão SD?


9

Como isso avisa, você não deve ativar a troca na partição errada ou pode destruir seu telefone:

OK antes de prosseguirmos! telefones anteriores tinham um layout de partição em que mmcblck0 era o cartão SD (externo); nosso telefone usa mmcblck1 para o sd externo. Isso é importante porque, se você usar um aplicativo, pode ser predefinido o uso de mmcblck0 como partição de swap. O uso dessa configuração fará com que você use o sbl2 ou sbl3 como partição de swap.

Portanto, a partição swap pode ser /dev/block/mmcblk0p3se eu tiver 3 partições (fat32, sdext, swap) no meu cartão SD ou /dev/block/mmcblk0p2se eu tiver 2 partições (fat43 e swap) ou /dev/block/mmcblk1p?se você tiver um telefone diferente etc. e a escolha errada puder ocorrer. seu telefone.

Como você descobre qual partição é qual? Deve ser a única partição em qualquer unidade do telefone com o swapsistema de arquivos.

  • fdisk -lfaz isso no Ubuntu , mas não produz nada no Android
  • blkid não mostra a partição de troca
  • cat /proc/partitions lista muitas partições, mas não indica qual é a troca
  • cat /proc/swapslista apenas trocas que estão sendo usadas
  • cat /proc/mtdsó diz dev: size erasesize namee nada mais
  • ls /dev/block/voldlista algumas partições como 179:64 179:65 179:66, mas não indica o que são?
  • A recuperação 4ext mostrará na tabela de partições ( swap swap 129 MiB), mas não diz o nome do desenvolvedor
  • ...

Mesmo se não houver ferramenta de linha de comando para imprimi-lo diretamente, certamente há uma maneira de deduzi-lo de outras informações?


Existe algo no seu /proc/swaps?
ott--

@ ott--: cat /proc/swapssó mostra o swapfile criado por swapper 2, não a partição no cartão SD
endolith

Como você já conhece o dispositivo (SDCard), você tentou usar mount(sem parâmetros) para encontrar o dispositivo de bloco correspondente ( /dev/block/*) e verificar isso na lista de /proc/partitions(ou /proc/mtd)? Se você não tiver mais nenhuma partição no seu cartão, sua partição de troca deve ser "a outra terminando com um dígito", a menos que seja mountapontada voldapenas. Nesse caso, comparar tamanhos (ou remover temporariamente o cartão para um "diff") pode ajudar.
Izzy

Respostas:


8

Instalei o aplicativo Disk Info e, nas opções, ativei o modo Expert e partições desmontadas . Ele não diz "swap", mas mostra claramente que é a única outra partição no cartão SD e o tamanho certo, por isso /dev/block/mmcblk1p2deve ser a única:

captura de tela do Disk Info

O Swapper 2 está configurado para usar /dev/block/mmcblk0p3por padrão, por isso estou feliz por não ter seguido o padrão.


8

fdisk -lfunciona se você passar o nome completo do dispositivo de disco explicitamente (por exemplo, fdisk -l /dev/block/mmcblk1); o que não funciona é a descoberta automática de dispositivos de bloco (aparentemente porque o Android coloca arquivos de dispositivo de bloco no /dev/blockdiretório, mas fdiskespera ver esses arquivos diretamente /dev). Portanto uma opção é recolher a lista de dispositivos de disco inteiros ( /dev/block/mmcblk0, /dev/block/mmcblk1...) e olhar para as suas tabelas de partição usando . Esses dispositivos de disco inteiro são listados antes das partições correspondentes.fdisk -l <device>/proc/partitions

O blkidutilitário não olha para a tabela de partições - ele abre todos os dispositivos de bloco conhecidos pelo sistema e detecta o tipo de sistema de arquivos dos dados reais desses dispositivos; portanto blkid, não mostrará as informações corretas para a partição de swap até que essa partição seja inicializada por mkswap. Isso significa que blkidé inútil para sua tarefa atual (encontrar para qual partição deve ser passada mkswap).

mountnormalmente mostra os dispositivos abaixo /dev/block/vold, que são nomeados de acordo com seus números maiores e menores. Para obter o nome normal do dispositivo, procure /proc/partitionsuma linha contendo os mesmos números nas duas primeiras colunas. Em seguida, você pode remover a parte do final do nome do dispositivo, adicionar no início e passar o nome resultante para ver a tabela de partição do dispositivo correspondente.p<number>/dev/block/fdisk -l

Lembre-se de que, se você observar a fdisk -lsaída do flash interno do eMMC, poderá encontrar muitas partições com tipos estranhos, especialmente em dispositivos baseados na Qualcomm. Por exemplo, consulte a tabela de partições para o 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

Os códigos de tipo de partição estão perigosamente errados, porque /dev/block/mmcblk0p1, o que é declarado Win95 FAT32 (LBA), na verdade contém alguns dados do sistema (incluindo locais e hashes MD5 de várias partes da ROM); no entanto, /dev/block/mmcblk0p28que é o "armazenamento interno de dados" no formato FAT16, tem um tipo que parece completamente falso. Nesse caso, o fabricante não reutilizou o 0x82código de tipo (troca Linux) para seus próprios fins, mas não tenho certeza de que tais colisões nunca ocorram, portanto, você não deve tentar usar cegamente qualquer partição que se pareça com troca - verifique primeiro se o tamanho do dispositivo e o layout da partição são o que você espera ver no seu cartão SD.

/proc/mtd nunca é útil para encontrar uma partição de troca no cartão SD (os drivers MTD são usados ​​para acessar os chips flash brutos diretamente conectados, eles não podem funcionar com cartões SD externos).


11
Aha! fdisk -l /dev/block/mmcblk1diz/dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap
endolith 10/10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.