Как найти путь к разделу подкачки на SD-карте?

9

Поскольку это предупреждает, вы не должны разрешать обмен на неправильном разделе или вы можете уничтожить ваш телефон:

Хорошо, прежде чем мы пойдем дальше! у предыдущих телефонов была схема разделов, где mmcblck0 был SD-картой (внешней), наш телефон использует mmcblck1 для внешнего sd. Это важно, потому что если вы используете приложение, оно может быть предварительно настроено на использование mmcblck0 в качестве раздела подкачки. Использование этого параметра приведет к тому, что вы будете использовать sbl2 или sbl3 в качестве раздела подкачки. Это заглушит ваш телефон, а руководство по разблокировке будет полезным.

Так что раздел подкачки может быть, /dev/block/mmcblk0p3если у меня есть 3 раздела (fat32, sdext, swap) на моей SD-карте, или /dev/block/mmcblk0p2если у меня есть 2 раздела (fat43 и swap), или /dev/block/mmcblk1p?если у вас другой телефон и т. Д., И неправильный выбор может привести к ошибкам Ваш телефон.

Как вы узнаете, какой раздел какой? Это должен быть единственный раздел на любом диске телефона с swapфайловой системой.

  • fdisk -lделает это на Ubuntu , но ничего не выводит в Android
  • blkid не показывает раздел подкачки
  • cat /proc/partitions перечисляет много разделов, но не указывает, какой это подкачка
  • cat /proc/swapsтолько списки свопов, которые уже используются
  • cat /proc/mtdтолько говорит dev: size erasesize nameи больше ничего
  • ls /dev/block/voldперечисляет некоторые разделы как 179:64 179:65 179:66, но не указывает, что они есть?
  • 4ext recovery покажет его в таблице разделов ( swap swap 129 MiB), но не скажет имя разработчика
  • ...

Даже если нет инструмента командной строки, чтобы напечатать это непосредственно, конечно, есть способ вывести это из некоторой другой информации ??

эндолиты
источник
Есть ли что-то в вашем /proc/swaps?
ot--
@ ott--: cat /proc/swapsпросто показывает файл подкачки, созданный swapper 2, а не раздел на SD-карте
эндолит
Как вы уже знаете устройство (SDCard), пытались ли вы использовать mount(без параметров), чтобы найти соответствующее блочное устройство ( /dev/block/*), и проверить это по списку /proc/partitions(или /proc/mtd)? Если у вас больше нет раздела на вашей карте, ваш раздел подкачки должен быть «другим разделом, заканчивающимся цифрой», если не mountуказано voldтолько. В этом случае сравнение размеров (или временное удаление карты для «сравнения») может помочь.
Иззи

Ответы:

8

Я установил приложение «Информация о диске» и в настройках включил режим «Эксперт» и « Размонтированные разделы» . Он не говорит «своп», но ясно показывает, что это единственный другой раздел на SD-карте, и он имеет правильный размер, поэтому /dev/block/mmcblk1p2должен быть один:

скриншот информации о диске

Swapper 2 настроен на использование /dev/block/mmcblk0p3по умолчанию, поэтому я рад, что не пошел по умолчанию.

эндолиты
источник
8

fdisk -lработает, если вы явно передаете имя целого дискового устройства (например, fdisk -l /dev/block/mmcblk1); не работает автоматическое обнаружение блочных устройств (очевидно, потому что Android помещает файлы блочных устройств в /dev/blockкаталог, но fdiskожидает увидеть эти файлы непосредственно в нем /dev). Поэтому один из вариантов является собрать список целых дисковых устройств ( /dev/block/mmcblk0, /dev/block/mmcblk1, ...) и посмотреть на их таблицы разделов , используя . Эти целые дисковые устройства перечислены в соответствующих разделах.fdisk -l <device>/proc/partitions

blkidУтилита не смотрит на таблицу разделов на всех - он открывает все блочные устройства , известные в системе и определяет тип файловой системы из фактических данных на этих устройствах; поэтому blkidне будет отображать правильную информацию для раздела подкачки, пока этот раздел не будет инициализирован mkswap. Это означает, что blkidэто бесполезно для вашей текущей задачи (поиск того, какой раздел должен быть передан mkswap).

mountобычно показывает устройства под /dev/block/vold, которые названы в соответствии с их старшими и младшими номерами. Чтобы получить обычное имя устройства, вы можете /proc/partitionsнайти строку с одинаковыми номерами в первых двух столбцах. Затем вы можете удалить деталь из конца имени устройства, добавить в начало и передать полученное имя, чтобы увидеть таблицу разделов соответствующего устройства.p<number>/dev/block/fdisk -l

Помните, что если вы посмотрите на fdisk -lвывод для внутренней флэш-памяти eMMC, вы можете найти множество разделов со странными типами, особенно на устройствах на базе Qualcomm. Например, смотрите таблицу разделов для 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

Коды типов разделов там даже опасно неправильны, потому /dev/block/mmcblk0p1что, как заявлено Win95 FAT32 (LBA), на самом деле содержит некоторые системные данные (включая местоположения и MD5-хэши различных частей ПЗУ); однако, /dev/block/mmcblk0p28который является «внутренним хранилищем данных» в формате FAT16, имеет тип, который выглядит полностью поддельным. В этом случае производитель не использовал повторно 0x82код типа (Linux swap) для своих собственных целей, но я не уверен, что такие коллизии никогда не происходят, поэтому не следует слепо пытаться использовать любой раздел, который выглядит как swap - сначала проверьте, что размер устройства и расположение разделов - это то, что вы ожидаете увидеть на своей SD-карте.

/proc/mtd никогда не используется для поиска раздела подкачки на SD-карте (драйверы MTD используются для доступа к непосредственно подключенным необработанным флэш-чипам, они не могут работать с внешними SD-картами).

Сергей Власов
источник
1
Ага! fdisk -l /dev/block/mmcblk1говорит/dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap
эндолит