如何在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.