【问题标题】:How to get all the mount point information for android device?如何获取安卓设备的所有挂载点信息?
【发布时间】:2011-10-13 01:26:09
【问题描述】:

如何以编程方式获取 Android 设备的所有挂载点信息?

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以通过检查/proc/partitions 查看系统已知的分区。来自我的 HTC Desire:

    major minor  #blocks  name
    
      31        0        640 mtdblock0
      31        1       4608 mtdblock1
      31        2       3072 mtdblock2
      31        3     256000 mtdblock3
      31        4      40960 mtdblock4
      31        5     151168 mtdblock5
     179        0    3872256 mmcblk0
     179        1    2872070 mmcblk0p1
     179        2    1000185 mmcblk0p2
    

    mtdblock 设备是手机的内部闪存。 mmcblk0 是手机的 SD 卡。

    查看安装位置的最佳方法是检查/proc/self/mountinfo。这比/proc/mounts 好,因为后者错过了某些信息。再次,在我的 HTC Desire 上(我添加了列标题并通过column -s 运行输出以获得良好的衡量标准):

    ID  PARENT  BLOCK  ROOT              MOUNTPOINT                   OPTIONS                             -  TYPE     SOURCE                 SUPEROPTS
    1   1       0:1    /                 /                            ro,relatime                         -  rootfs   rootfs                 ro
    11  1       0:11   /                 /dev                         rw,relatime                         -  tmpfs    tmpfs                  rw,mode=755
    12  11      0:9    /                 /dev/pts                     rw,relatime                         -  devpts   devpts                 rw,mode=600
    13  1       0:3    /                 /proc                        rw,relatime                         -  proc     proc                   rw
    14  1       0:12   /                 /sys                         rw,relatime                         -  sysfs    sysfs                  rw
    15  1       0:13   /                 /acct                        rw,relatime                         -  cgroup   none                   rw,cpuacct
    16  1       0:14   /                 /mnt/asec                    rw,relatime                         -  tmpfs    tmpfs                  rw,mode=755,gid=1000
    17  1       0:15   /                 /mnt/obb                     rw,relatime                         -  tmpfs    tmpfs                  rw,mode=755,gid=1000
    18  11      0:16   /                 /dev/cpuctl                  rw,relatime                         -  cgroup   none                   rw,cpu
    19  1       31:3   /                 /system                      ro,relatime                         -  yaffs2   /dev/block/mtdblock3   ro
    20  1       31:5   /                 /data                        rw,nosuid,nodev,relatime            -  yaffs2   /dev/block/mtdblock5   rw
    21  1       31:4   /                 /cache                       rw,nosuid,nodev,relatime            -  yaffs2   /dev/block/mtdblock4   rw
    22  21      31:5   /local/download   /cache/download              rw,nosuid,nodev,relatime            -  yaffs2   /dev/block/mtdblock5   rw
    23  1       179:2  /                 /sd-ext                      rw,nosuid,nodev,noatime,nodiratime  -  ext4     /dev/block/mmcblk0p2   rw,commit=19,barrier=0,data=writeback
    24  20      179:2  /app              /data/app                    rw,nosuid,nodev,noatime,nodiratime  -  ext4     /dev/block/mmcblk0p2   rw,commit=19,barrier=0,data=writeback
    25  20      179:2  /data             /data/data                   rw,nosuid,nodev,noatime,nodiratime  -  ext4     /dev/block/mmcblk0p2   rw,commit=19,barrier=0,data=writeback
    26  14      0:6    /                 /sys/kernel/debug            rw,relatime                         -  debugfs  /sys/kernel/debug      rw
    27  1       179:1  /                 /mnt/sdcard                  rw,nosuid,nodev,noexec,relatime     -  vfat     /dev/block/vold/179:1  rw,dirsync,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro
    28  1       179:1  /.android_secure  /mnt/secure/asec             rw,nosuid,nodev,noexec,relatime     -  vfat     /dev/block/vold/179:1  rw,dirsync,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro
    29  27      0:17   /                 /mnt/sdcard/.android_secure  ro,relatime                         -  tmpfs    tmpfs                  ro,size=0k,mode=000
    

    【讨论】:

    • "mtdblock 设备是手机的内部闪存。mmcblk0 是手机的 SD 卡。"。似乎不是一个有效的假设。在我的平板电脑(Dell Venue 7)上,既有内存又有 SD 卡,只有 mcc* 分区。
    • 是的,这只是一个解释性观察。假设在不同的设备上会出现这种情况是无效的。
    【解决方案2】:

    不完全是 android api 的一部分,但如果您阅读 /proc/mounts

    ,底层 linux 会告诉您正在使用的

    澄清一下,在以后的 Android 版本中,Linux 为每个进程祖先拥有唯一挂载的能力得到了利用,因此应用进程看到的挂载可能(并且通常会)不同于从 ADB 启动的东西看到的挂载,或者一个核心系统进程。

    【讨论】:

    • 如何理解从 /proc/mounts 获得的这些值 --->rootfs / rootfs ro,relatime 0 0 tmpfs /dev tmpfs rw,relatime,mode=755 0 0 devpts /dev/pts devpts rw,relatime,mode=600 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,relatime 0 0 .
    • 读取内核源代码或从已知的整体中找出它:它似乎是 {device, mountpoint, type, options, etc...} 但不能保证在某些情况下不会改变点。
    • 谢谢你克里斯..你会知道答案吗:stackoverflow.com/q/6824604/530993
    【解决方案3】:

    adb shell df -h

    例子

      Filesystem      Size  Used Avail   Use%   Mounted on
      tmpfs           3.6G  1.1M  3.6G     1%   /dev
      tmpfs           3.6G     0  3.6G     0%   /mnt
    
                 
    

    【讨论】:

      【解决方案4】:

      /proc/mtd

      或在其他手机上:

      /proc/emmc

      这将显示所有分区及其名称 - 当前可能已安装或未安装。

      【讨论】:

        【解决方案5】:

        这适用于我的三星 j5

        adb shell df -h

        【讨论】:

          猜你喜欢
          • 2011-10-27
          • 1970-01-01
          • 1970-01-01
          • 2018-02-11
          • 1970-01-01
          • 1970-01-01
          • 2015-09-11
          • 1970-01-01
          相关资源
          最近更新 更多