如何在SD卡上找到交换分区的路径名?


9

由于此提醒,你不应该在错误的分区使交换,也可以摧毁你的电话:

可以,再继续吧!以前的手机具有分区布局,其中mmcblck0是SD卡(外部),我们的手机将mmcblck1用于外部sd。这很重要,因为如果您使用的是应用程序,则可能会将其预设为使用mmcblck0作为交换分区。使用此设置将导致您将sbl2或sbl3用作交换分区。这将使您的手机变砖,unbrick指南将成为useles。

因此,交换分区可能是以下/dev/block/mmcblk0p3情况:我的SD卡上有3个分区(fat32,sdext,swap),或者/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恢复将在分区表(swap swap 129 MiB)中显示它,但未说明开发人员名称
  • ...

即使没有命令行工具直接打印它,也肯定有一种方法可以从其他信息中推导出来?


你有东西/proc/swaps吗?
— ott-- 2013年

@ ott--:cat /proc/swaps仅显示由交换器2创建的交换文件,而不是SD卡上的分区
— endolith 2013年

您已经知道设备(SDCard),是否尝试使用mount(不带参数)查找相应的块设备(/dev/block/*),并对照/proc/partitions(或/proc/mtd)列表进行检查?如果您的卡上没有其他分区,则交换分区应该是“另一个以数字结尾的分区”,除非仅mount指出vold。在这种情况下,比较大小(或暂时删除“差异”卡)可能会有所帮助。
— 伊兹

Answers:


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的设备上。例如,请参阅三星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)实际包含一些系统数据(包括ROM各个部分的位置和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
— endlith 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.