这里续上一篇文章,讲解挂载磁盘的操作:
3.挂载磁盘。这里都有一个const char *类型的参数,这参数保存着每个磁盘的标签信息,比如sd卡的label是sdcard。
lookupVolume函数寻找与label匹配的对象:
如果找到,直接返回磁盘对象Volume*,挂载操作在mountVol函数里面,该函数内容有点多,贴源码:
这个挂载函数看起来,会发现很繁琐,好几个目录的挂载关系,有以下挂载目录:
/dev/block/vold/8:1 挂载在-> /mnt/secure/staging
/mnt/secure/staging/.android_secure 挂载在-> /mnt/secure/asec
tmpfs 挂载在-> /mnt/secure/staging/.android_secure
/mnt/secure/staging 挂载在-> /mnt/sdcard
从程序的注释看,这样的目的是挂载一个只有root用户能查看的目录,具体还是没搞清楚谷歌为什么要这样挂载,
还是有疑问,希望有清楚的高手指点一下。
sd卡的挂载比较清楚,中间多了一个中介,将设备节点8:1挂载在/mnt/secure/staging,最后又将该目录挂载在/mnt/sdcard,
这目录就是最终用户能够看到文件的目录。
函数里面涉及到几个函数:
getDeviceNodes函数获取挂载设备的设备号与分区数量,是Volume类的一个纯虚函数,在子类DirectVolume中实现,源码:
下面贴一些mountVol里面挂载的源码:
篇幅有点长了,挂载点也挂载了好几个,mountVol处理的事情最多的,也最繁琐,但都是简单的,主要是有点摸不着头脑,
谷歌为啥要这样挂载,也许自己太菜了。。
下一篇文章继续。。
分享到:
相关推荐
vold的存在使得Android系统能够更加灵活地管理和响应外部存储设备的变化,如SD卡的插入与移除。 #### 二、vold的工作流程与结构 vold在Android系统中的工作流程可以分为几个关键步骤: 1. **Linux Kernel**:当...
在Android系统中,`vold`(Volume Daemon)是一个至关重要的服务,它负责管理设备的存储空间,包括内部存储和外部存储(如SD卡)。`vold`在系统启动时运行,提供对文件系统的挂载、卸载以及权限管理等功能。通过对`...
在Android 系统中所有的热插拔设备都是通过Vold 进程挂载的。通过kernel–>vold–>StorageManagerService这样的架构去逐级上报热插拔事件。 一、Vold 入口 --> /system/vold/main.c int main(int argc, char** ...
在Android系统中,`vold`(Volume Daemon)是一个关键的系统服务,它负责管理设备上的存储设备,包括内部存储、外部SD卡以及USB设备。本文将深入探讨如何在Android系统上实现对多个U盘及多分区的挂载,基于描述中的...
在Android操作系统中,Vold(Volume Daemon)是一个至关重要的组件,它负责管理设备的存储系统,包括内部存储、外部SD卡以及各种类型的USB存储设备。Vold作为系统服务运行在特权用户空间,确保了对存储设备的访问...
Android Vold(Volume Daemon)是Android系统中的一个重要组件,它主要负责管理移动设备上的外部存储设备,如SD卡和USB存储设备。Vold作为一个本地服务,监控并响应这些存储设备的插入、移除和其他相关操作,确保...
在Android系统中,vold(Volume Daemon)是一个核心的组件,用于管理USB存储和SD卡等外部存储设备。要深入理解vold的工作原理,我们首先需要了解udev,因为在概念和功能上,vold是udev在Android平台上的替代。 udev...
Vold是一个本地服务,它在Android中扮演着重要角色,负责处理如SD卡、USB存储设备的插拔事件。 1. **Vold总体架构** Vold服务由`volumeManager`统一管理,它调度不同的模块协同工作。这些模块包括: - `...
USB之android_Vold分析,分析了linux udev与android vold的关系由来,vold的功能、架构,使用netlink的通信过程。kernel的uevent发送,framework层的处理、磁盘的挂载等等。
Vold,即Volume Daemon,是Android系统中用于管理外部存储设备(如USB、SD卡等)的核心组件。它的功能涵盖了设备的检测、挂载、卸载以及状态监控等多个方面。Vold的设计理念源于udev,但在Android环境下进行了定制化...
Vold,即Volume Daemon,是Android系统中用于管理外部存储设备(如USB、SD卡)的重要组件。它继承了Linux内核中udev的设计理念,但针对Android环境进行了定制化改进。 ##### 1.1 udev的由来 udev是Linux 2.6内核中...
Android 存储设备挂载流程详解 Android 存储设备挂载流程是一个复杂的过程,其中涉及到多个组件和模块的协作。在 Android 系统中,存储设备挂载流程可以分为手动挂载和自动挂载两个部分。本文将着重分析自动挂载...
在Android系统中,Vold(Volume Daemon)扮演着类似于udev的角色,用于管理USB存储设备及SD卡等外部存储介质。尽管Vold的机制与udev相似,但由于Android系统的特殊性(如跨平台兼容性需求、安全性考虑等),Android...
### Android 2.3 SD卡挂载流程浅析 #### 一、概述 在Android 2.3系统中,对于外部存储设备如SD卡的管理采用了一种较为成熟且自动化的机制。当用户将SD卡插入设备时,系统能够自动识别并完成挂载操作,使用户可以...
它的作用主要是与内核层通信,并对外部存储设备如USB和SD卡等进行管理。VOLD在Android设备中扮演着非常重要的角色,尤其是在处理存储设备连接与断开、文件系统挂载、权限控制等场景中。而udev则是Linux系统中负责...
- Android源码中,`android.os.storage`包包含了与外部存储交互的相关类,如`StorageManager`,可以用于挂载、卸载、查询SD卡状态等操作。 - `MediaScannerConnection`类用于扫描新添加或修改的文件,使其在媒体库...
android平台移植ntfs-3g使支持ntfs格式tf卡、U盘、stat硬盘挂载,解压文件到external目录下,mm编译成功后,可手动指行 ntfs-3g /dev/block/vold/* /storage/sdcard1 或者添加 Ntfs.cpp Ntfs.h到system/vold目录实现...
mountVol() 方法会将 SD 卡挂载到系统中的具体实现细节,该方法会调用 system/vold/fat.cpp/doMount() 方法,该方法会实际执行 SD 卡的挂载操作。 在 framework 层,/framework/base/services/java/...