原文参见:
http://www.linuxidc.com/Linux/2011-11/47136.htm
以下是节选部分:
在Android 2.3中,当SD卡插入系统之后,系统会自动挂载。Vold 就是负责挂载SD卡的,vold 的全称是volume daemon。实际上是负责完成系统的CDROM,USB 大容量存储,MMC 卡(后文有简介,具体请百度)等扩展存储的挂载任务自动完成的守护进程。它提供的主要特点是支持这些存储外设的热插拔。在Android上的这个vold系统和GNU/Linux的之间存在很大的差异。自Android 2.2开始,vold又做了大改动,升级为vold 2.0,之前的配置文件是system/etc/vold.conf,vold 2.0变为system/etc/vold.fstab。
vold.fstab中的内容显示如下:
## Vold 2.0 Generic fstab
## - San Mehat (san@Android.com)
##
#######################
## Regular device mount
##
## Format: dev_mount <label> <mount_point> <part> <sysfs_path1...>
## label - Label for the volume
## mount_point - Where the volume will be mounted
## part - Partition # (1 based), or 'auto' for first usable partition.
## <sysfs_path> - List of sysfs paths to source devices
######################
## Example of a standard sdcard mount for the emulator / Dream
# Mounts the first usable partition of the specified device
dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
## Example of a dual card setup
# dev_mount left_sdcard /sdcard1 auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
# dev_mount right_sdcard /sdcard2 auto /devices/platform/goldfish_mmc.1 /devices/platform/msm_sdcc.3/mmc_host/mmc1
## Example of specifying a specific partition for mounts
# dev_mount sdcard /sdcard 2 /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
可以看到大部分是注释,最重要的为以下这句:
dev_mount sdcard /mnt/sdcard auto /devices/platform/goldfish_mmc.0 /devices/platform/msm_sdcc.2/mmc_host/mmc1
这句代码意思是:外置SD卡的挂载路径,auto 代表挂载SD卡的第一个分区,后面是vold监测的路径,当插入sd时,/devices/platform/msm_sdcc.2/mmc_host/mmc1 路径下会多出一个文件夹,在该文件夹中包含了SD卡的各种ID信息,以及生产日期等。
如果把sd卡插入设备,在 /dev/block/ 目录下面也会多出几个设备节点,证明sd卡的驱动已经成功加载。 我自己测试的目录下面会形成 mmcblk0 和 mmcblk0p1 节点,注意:这两个节点的意思,mmcblk0代表第一个SD卡设备,mmcblk0p1代表第一个SD卡设备的第一个分区。真正挂载到系统中的是mmcblk0p1而不是mmcblk0,这一点很重要。