fuse整理

 

http://blog.csdn.net/bpingchang/article/details/8228166

 

http://wenku.baidu.com/link?url=Ztu086BOMawvKRBxxPTWrTS5gMTnuBkeGAcnpqBziq7CGzUCJmXg99HaX94uv-P2MH79z38OkyD-dvjKS0hfiJnsi7XIBDEJlKXznNC2_P3

 

 

http://www.netfoucs.com/article/Fybon/72468.html: android fuse

 

 http://www.miui.com/thread-863099-1-1.html: 下面的文章android各版本的storage目录的变化:

 

 

 ---- android 4.0 ----
在galaxy nexus(GN)手机上userdata分区很大,被挂在/data目录,用户的数据通常是放在sd卡上,然而gn是没有sd卡的,所以google想了一个办法,就是虚拟一个。

所以,在userdata分区下有个目录叫media,是内置sd卡的数据存储位置,使用fuse技术将/data/media虚拟成为一个叫做/dev/fuse的设备,为了让程序能认出来,被同时挂载在 /mnt/sdcard 目录,
又为了兼容以前的程序,做了一个快捷方式(linux系统里叫软连接) /sdcard 指向的是 /mnt/sdcard .

当然,这些都是4.0的做法。

---- android 4.1 ----
在4.1里,同样也会使用fuse技术,/dev/fuse 会被同时挂载到/storage/sdcard0 目录,这个sdcard0表示第一个sd卡(如果有外置sd卡,那会多一个 /storage/sdcard1,比如我的xoom), /sdcard 软连接会指向 /storage/sdcard0 ,此时/mnt/sdcard 也是个软连接,会指向/storage/sdcard0。
如果你通过otg线接U盘,会被挂载到 /storage/usb0目录,stickmount这个软件为了让图库、快图、mx player等软件,能看到u盘里的数据,又同时挂载到 /storage/sdcard0/usStorage/sda1.

也许你会问,为什么不是usb0,而是sda1,这是linux的对硬盘的命名方式,如果你的u盘有多个分区,就分别是sda1,sda2这样一直排下去了。

---- android 4.2 ----
好了,我们开始说4.2系统。

谷歌是不是没事干啊,非要给android搞个多用户,你想想啊,在中国,可能因为经济问题,家里不是每人一个电脑,在美国,几乎需要用电脑的人,都会自己有一台或多台,一台电脑多人用的情况少之又少,这就是为什么叫PC了,顾名思义,个人电脑。像手机和平板这些东西,更加私人化了,很少公用了吧,我想在中国也是如此吧。

当然,谷歌也不完全是抽风,因为他有更大的战略部署,而且平板也的确有多人用的可能。

所以谷歌搞出来一个多用户,那每个人的应用、数据、个性配置都要分开吧。 应用和个性配置好弄,想想啊,通过权限控制,每人只能看自己的应用就行了,桌面也可以用自己的。

那数据怎么办????

好吧,调整用户数据的挂载结构。android 4.2,同样也会使用fuse技术/dev/fuse 会被挂载到/storage/emulated/0 目录,为什么是0呢,你还记得上边的sdcard0吧,第一个的意思。(如果有第二个,应该就是/storage/emulated/1,我们的三儿子没有外置sd卡,所以没法验证)

为了兼容以前,同时挂载到 /storage/emulated/legacy (故名思议,传统的),还建立三个软连接 /storage/sdcard0 ,/sdcard,/mnt/sdcard ,都指向  /storage/emulated/legacy

还有值得一提的是,4.2刚出来,这块变动又比较大,所以stickmount还没跟上,暂时没法通过otg挂载u盘了。

所以大家不用为0而苦恼了,这是正常的“生理特征”

也许你会问,这个0和多用户有什么关系呢,那是因为多用户这个新特性,只在平板上才启用,在手机上会被禁用的。但是底层实现是一致的。 /mnt/shell/emulated 目录和 /storage/emulated 下的文件夹是一样的。(注意,这个/mnt/shell/emulated  不是挂载出来的)

由于我没有平板升级到4.2,所以只是推测,/mnt/shell/ 是为了多用户准备的,因为linux的多用户是基于shell实现的。

 

comments(android 4.2):

用了fuse之后,内置sdcard被mount到/data目录。/data/media又被fuse用来map成了/dev/fuse设备。这个/dev/fuse设备又被挂到/storage/sdcard0. 而外置sdcard则被挂在了/storage/sdcard1. 到了4.2以后, 增加了多用户的概念, 然后就多了一层emulate.本质上仍然是前面的处理。usb会被挂到/stoarge/usb0....什么的下面。

 

android4.4的新情况:

http://www.iteye.com/news/28768-Android-KitKat

http://bbs.anzhi.com/thread-9149319-1-1.html

 http://www.zhihujingxuan.com/17310.html

 

 

http://gw-1984.blog.163.com/blog/static/952912892013101582942816/:解释"EMULATED_STORAGE_SOURCE"/"EMULATED_STORAGE_TARGET"

 

 

 


关于primary存储器,一般指内部大容量存储器, 比如sdcard0.  android 4.4之后, 第二块外部sdcard(sdcard1),不能在根目录操作,只能使用下面的接口, 操作特定的目录。

android.content.Context#getExternalFilesDir/getExternalCacheDir/(getExternalStoragePublicDirectory(需要android.Manifest.permission#WRITE_EXTERNAL_STORAGE/android.Manifest.permission#READ_EXTERNAL_STORAGE))

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值