Как это предупреждает, вы не должны включать своп на неправильном разделе, иначе вы можете испортить свой телефон:
ОК, прежде чем мы пойдем дальше! предыдущие телефоны имели структуру разделов, где 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 , но ничего не выводит в Androidblkid
не показывает раздел подкачкиcat /proc/partitions
перечисляет множество разделов, но не указывает, какой из них является свопомcat /proc/swaps
только список свопов, которые уже используютсяcat /proc/mtd
только говорит dev: size erasesize name
и ничего большеls /dev/block/vold
перечисляет некоторые разделы как 179:64 179:65 179:66
, но не указывает, что это такое?swap swap 129 MiB
), но не скажет имя разработчикаДаже если нет инструмента командной строки для прямой печати, наверняка есть способ вывести его из какой-то другой информации ??
Я установил приложение «Информация о диске » и в настройках включил режим «Эксперт» и « Размонтированные разделы » . Он не говорит «подкачка», но ясно показывает, что это единственный другой раздел на SD-карте и он правильного размера, поэтому /dev/block/mmcblk1p2
он должен быть таким:
Swapper 2 настроен на использование /dev/block/mmcblk0p3
по умолчанию, поэтому я рад, что не использовал его по умолчанию.
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-картами).
fdisk -l /dev/block/mmcblk1
говорит/dev/block/mmcblk1p2 30637 31152 132096 82 Linux swap
отт--
/proc/swaps
?эндолит
cat /proc/swaps
просто показывает файл подкачки, созданный swapper 2, а не раздел на SD-картеИззи
mount
(без параметров) найти соответствующее блочное устройство (/dev/block/*
) и проверить его по списку/proc/partitions
(или/proc/mtd
)? Если у вас нет другого раздела на вашей карте, ваш раздел подкачки должен быть «другим разделом, оканчивающимся на цифру», если только это неmount
указаноvold
. В этом случае может помочь сравнение размеров (или временное удаление карты для сравнения).