亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

內置存儲fuse文件系統

2019-11-09 15:35:19
字體:
來源:轉載
供稿:網友

fuse把/data/media映射為 /storage/emulated/0,供上層app用這個路徑。/dev/fuse /mnt/runtime/default/emulated fuse rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0/dev/fuse /storage/emulated fuse rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0/dev/fuse /mnt/runtime/read/emulated fuse rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0/dev/fuse /mnt/runtime/write/emulated fuse rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0root@nikel:/ # ls -l /mnt/runtime/read/emulated/                               drwxr-x--- root     everybody          2015-01-01 00:08 0drwxr-x--- root     everybody          2015-01-02 16:28 obbroot@nikel:/ # ls -l /mnt/runtime/read/emulated/0/                             drwxr-x--- root     everybody          2015-01-01 00:00 Alarmsdrwxr-x--- root     everybody          2015-01-01 00:00 Androiddrwxr-x--- root     everybody          2015-01-01 00:00 DCIMdrwxr-x--- root     everybody          2015-01-01 00:00 Downloaddrwxr-x--- root     everybody          2015-01-01 00:07 DuoKandrwxr-x--- root     everybody          2015-01-01 00:27 MIUIdrwxr-x--- root     everybody          2015-01-01 00:00 Moviesdrwxr-x--- root     everybody          2015-01-01 00:00 Musicdrwxr-x--- root     everybody          2015-01-01 00:00 Notificationsdrwxr-x--- root     everybody          2015-01-01 00:00 Picturesdrwxr-x--- root     everybody          2015-01-01 00:00 Podcastsdrwxr-x--- root     everybody          2015-01-01 00:00 Ringtonesdrwxr-x--- root     everybody          2015-01-01 00:06 Tencentdrwxr-x--- root     everybody          2015-01-01 00:00 Xiaomi-rw-r----- root     everybody        2 2015-01-01 00:27 dctp-rw-r----- root     everybody       41 2015-01-01 00:27 diddrwxr-x--- root     everybody          2015-01-01 00:00 mi_drivedrwxr-x--- root     everybody          2015-01-01 00:00 miaddrwxr-x--- root     everybody          2015-01-01 00:08 mtklogdrwxr-x--- root     everybody          2015-01-01 00:00 sogouroot@nikel:/ # ls -l /mnt/runtime/write/emulated/0/                            drwxrwx--- root     everybody          2015-01-01 00:00 Alarmsdrwxrwx--- root     everybody          2015-01-01 00:00 Androiddrwxrwx--- root     everybody          2015-01-01 00:00 DCIMdrwxrwx--- root     everybody          2015-01-01 00:00 Downloaddrwxrwx--- root     everybody          2015-01-01 00:07 DuoKandrwxrwx--- root     everybody          2015-01-01 00:27 MIUIdrwxrwx--- root     everybody          2015-01-01 00:00 Moviesdrwxrwx--- root     everybody          2015-01-01 00:00 Musicdrwxrwx--- root     everybody          2015-01-01 00:00 Notificationsdrwxrwx--- root     everybody          2015-01-01 00:00 Picturesdrwxrwx--- root     everybody          2015-01-01 00:00 Podcastsdrwxrwx--- root     everybody          2015-01-01 00:00 Ringtonesdrwxrwx--- root     everybody          2015-01-01 00:06 Tencentdrwxrwx--- root     everybody          2015-01-01 00:00 Xiaomi-rw-rw---- root     everybody        2 2015-01-01 00:27 dctp-rw-rw---- root     everybody       41 2015-01-01 00:27 diddrwxrwx--- root     everybody          2015-01-01 00:00 mi_drivedrwxrwx--- root     everybody          2015-01-01 00:00 miaddrwxrwx--- root     everybody          2015-01-01 00:08 mtklogdrwxrwx--- root     everybody          2015-01-01 00:00 sogouroot@nikel:/ # root@nikel:/ # ls -l /mnt/runtime/default/ /emulated/0/                        emulated/ sdcard0/  self/     root@nikel:/ # ls -l /mnt/runtime/default/emulated/0/                          drwxrwx--x root     sdcard_rw          2015-01-01 00:00 Alarmsdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 Androiddrwxrwx--x root     sdcard_rw          2015-01-01 00:00 DCIMdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 Downloaddrwxrwx--x root     sdcard_rw          2015-01-01 00:07 DuoKandrwxrwx--x root     sdcard_rw          2015-01-01 00:27 MIUIdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 Moviesdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 Musicdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 Notificationsdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 Picturesdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 Podcastsdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 Ringtonesdrwxrwx--x root     sdcard_rw          2015-01-01 00:06 Tencentdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 Xiaomi-rw-rw---- root     sdcard_rw        2 2015-01-01 00:27 dctp-rw-rw---- root     sdcard_rw       41 2015-01-01 00:27 diddrwxrwx--x root     sdcard_rw          2015-01-01 00:00 mi_drivedrwxrwx--x root     sdcard_rw          2015-01-01 00:00 miaddrwxrwx--x root     sdcard_rw          2015-01-01 00:08 mtklogdrwxrwx--x root     sdcard_rw          2015-01-01 00:00 sogo127|root@nikel:/ # dumpsys mount                                               Disks:Volumes:  VolumeInfo{emulated}:    type=EMULATED diskId=null partGuid=null mountFlags=PRIMARY|VISIBLE mountUserId=-1 state=MOUNTED     fsType=null fsUuid=null fsLabel=null     path=/storage/emulated internalPath=/data/media Disks:  DiskInfo{disk:179,128}:    flags=ADOPTABLE|SD size=1002962944 label=     sysPath=/sys//devices/mtk-msdc.0/11240000.msdc1/mmc_host/mmc1/mmc1:0001/block/mmcblk1 Volumes://sd卡  VolumeInfo{public:179,129}:    type=PUBLIC diskId=disk:179,128 partGuid=null mountFlags=VISIBLE mountUserId=0 state=MOUNTED     fsType=vfat fsUuid=88FC-16F9 fsLabel=     path=/storage/88FC-16F9 internalPath=/mnt/media_rw/88FC-16F9(path是fuse提供給上層的路徑,internalPath是實際路徑)//內部存儲  VolumeInfo{emulated}:    type=EMULATED diskId=null partGuid=null mountFlags=PRIMARY|VISIBLE mountUserId=-1 state=MOUNTED     fsType=null fsUuid=null fsLabel=null     path=/storage/emulated internalPath=/data/media 

用戶空間文件系統(Filesystem in Userspace,簡稱FUSE)指在用戶態實現的文件系統

FUSE文件系統由兩部分組成:

 kernel     fs/fuse用戶態    fuse daemon(開發者需要實現的)

以內置存儲為例:

data 分區以ext4格式被掛載

fuse的root node為data/media,即利用data分區的media目錄存儲sdcard與data共用

內置存儲的fuse daemon 為system/core/sdcard/sdcard.c

 

圖1-1 黑色箭頭表示             app通過fuse向sdcard daemon 發出文件系統操作請求(read write and so on)

          綠色箭頭表示             sdcard damon 實際完成操作

          紅色箭頭表示             sdcard damon 通過fuse(/dev/fuse)向app反饋操作結果

以 ls -l   storage/emulated/0 為例,看fuse文件系統操作過程

通過strace命令觀測系統調用過程

root@scorpio:/ # ps | grep -i sdcardmedia_rw 1978 468 9336 1864 inotify_re 7fa1959e3c S /system/bin/sdcard

root@scorpio:/ # strace ls -l storage/emulated/0

root@scorpio:/ # strace -ftt -p 1978                                         //1978 是 sdcard 進程號

下面是strace片段

root@scorpio:/ # strace -ftt -p 1978 Process 1978 attached with 4 threads

[pid 2038] 22:42:28.162015 read(4, "P/0/0/0/34/0/0/0/n/20/0/0/0/0/0/0/0 0/241/177/0/0/0/0/0/0/0/0/0/0/0"..., 262224) = 80[pid 2038] 22:42:28.162310 getdents64(11, /* 0 entries */, 4200) = 0[pid 2038] 22:42:28.162466 write(4, "/20/0/0/0/0/0/0/0/n/20/0/0/0/0/0/0", 16) = 16[pid 2038] 22:42:28.163092 read(4, "8/0/0/0/3/0/0/0/v/20/0/0/0/0/0/0/0 0/241/177/0/0/0/0/0/0/0/0/0/0/0"..., 262224) = 56[pid 2038] 22:42:28.163294 newfstatat(AT_FDCWD, "/data/media/0", {st_mode=S_IFDIR|0770, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0[pid 2038] 22:42:28.163507 writev(4, [{"x/0/0/0/0/0/0/0/v/20/0/0/0/0/0/0", 16}, {"/n/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/1/0/0/0/0/0/0/0/0/20/0/0/0/0/0/0"..., 104}], 2) = 120[pid 2038] 22:42:28.163700 read(4, "//0/0/0/1/0/0/0/f/20/0/0/0/0/0/0/0 0/241/177/0/0/0/0/0/0/0/0/0/0/0"..., 262224) = 47[pid 2038] 22:42:28.163866 faccessat(AT_FDCWD, "/data/media/0/Alarms", F_OK) = 0[pid 2038] 22:42:28.164053 newfstatat(AT_FDCWD, "/data/media/0/Alarms", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0[pid 2038] 22:42:28.164238 writev(4, [{"/220/0/0/0/0/0/0/0/f/20/0/0/0/0/0/0", 16}, {"/200/"0/241/177/0/0/0/5/0/0/0/0/0/0/0/n/0/0/0/0/0/0/0/n/0/0/0/0/0/0/0"..., 128}], 2) = 144[pid 2038] 22:42:28.164425 read(4, "-/0/0/0/1/0/0/0/r/20/0/0/0/0/0/0/0 0/241/177/0/0/0/0/0/0/0/0/0/0/0"..., 262224) = 45[pid 2038] 22:42:28.169564 faccessat(AT_FDCWD, "/data/media/0/DCIM", F_OK) = 0[pid 2038] 22:42:28.169775 newfstatat(AT_FDCWD, "/data/media/0/DCIM", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0[pid 2038] 22:42:28.169975 writev(4, [{"/220/0/0/0/0/0/0/0/r/20/0/0/0/0/0/0", 16}, {"/0%0/241/177/0/0/0/n/0/0/0/0/0/0/0/n/0/0/0/0/0/0/0/n/0/0/0/0/0/0/0"..., 128}], 2) = 144[pid 2038] 22:42:28.170184 read(4, "1/0/0/0/1/0/0/0/16/20/0/0/0/0/0/0/0 0/241/177/0/0/0/0/0/0/0/0/0/0/0"..., 262224) = 49[pid 2038] 22:42:28.171253 faccessat(AT_FDCWD, "/data/media/0/Download", F_OK) = 0[pid 2038] 22:42:28.171593 newfstatat(AT_FDCWD, "/data/media/0/Download", {st_mode=S_IFDIR|0775, st_size=4096, ...}, AT_SYMLINK_NOFOLLOW) = 0[pid 2038] 22:42:28.171855 writev(4, [{"/220/0/0/0/0/0/0/0/16/20/0/0/0/0/0/0", 16}, {"/200$0/241/177/0/0/0/t/0/0/0/0/0/0/0/n/0/0/0/0/0/0/0/n/0/0/0/0/0/0/0"..., 128}], 2) = 144

Android M sdcard daemon由vold啟動

static const char* kFusePath = "/system/bin/sdcard";

if (!(mFusePid = fork())) {if (execl(kFusePath, kFusePath,"-u", "1023", // AID_MEDIA_RW"-g", "1023", // AID_MEDIA_RW"-m","-w",mRawPath.c_str(),label.c_str(),NULL)) {PLOG(ERROR) << "Failed to exec";}

從sdcard 進程啟動的參數看sdcard 目錄權限是入參-u -g -w帶進去的.


上一篇:Swift3.0 反射

下一篇:效果動畫

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色噜噜国产精品视频一区二区| 亚洲国产精品中文| 亚洲精品wwww| 亚洲福利精品在线| 欧美激情区在线播放| 欧美高跟鞋交xxxxhd| 久99九色视频在线观看| 亚洲一区二区三区毛片| 欧洲亚洲在线视频| 久久国产精品影片| 成人国产精品av| 欧美激情在线狂野欧美精品| 亚洲片在线观看| 91免费看国产| 亚洲999一在线观看www| 国产97色在线| 欧美日韩一区免费| 精品一区二区三区电影| 亚洲春色另类小说| 亚洲韩国欧洲国产日产av| 欧美一级大胆视频| 国产午夜精品视频免费不卡69堂| 日韩高清a**址| 亚洲成人久久一区| 欧美性生交大片免网| 日韩中文在线观看| 国模叶桐国产精品一区| 免费99精品国产自在在线| 成人精品网站在线观看| 国产+人+亚洲| 人人做人人澡人人爽欧美| 国产精品入口尤物| 欧美亚洲在线观看| 欧美精品激情视频| 美女性感视频久久久| 美日韩精品免费视频| 亚洲成人免费在线视频| 欧美人与性动交a欧美精品| 国产精品日韩电影| 日韩视频精品在线| 亚洲欧美自拍一区| 欧美麻豆久久久久久中文| 日韩欧美亚洲国产一区| 91高潮精品免费porn| 欧美激情一区二区三区在线视频观看| 色偷偷av一区二区三区| 日韩福利在线播放| 国产精品网站大全| 亚洲国产精品久久91精品| 亚洲a级在线观看| 久久久久久久色| 国产69久久精品成人看| 日韩少妇与小伙激情| 成人久久一区二区三区| 亚洲欧美制服丝袜| 久久影视免费观看| 亚洲美女黄色片| 欧美国产日本高清在线| 国产美女精品免费电影| 亚洲一区二区免费在线| 欧美成人精品在线播放| 欧美一级免费看| 日韩欧亚中文在线| 日韩免费观看网站| 国产精品2018| 日韩精品视频在线观看网址| 亚洲护士老师的毛茸茸最新章节| 日韩中文字幕在线视频| 欧美疯狂做受xxxx高潮| 1769国内精品视频在线播放| 欧美一级高清免费播放| 日本韩国在线不卡| 久久久精品一区二区| 国产日韩在线精品av| 久久躁狠狠躁夜夜爽| 国产欧美韩国高清| 亚洲欧美国产高清va在线播| 国语自产精品视频在线看抢先版图片| 26uuu国产精品视频| 精品电影在线观看| 亚洲成色777777在线观看影院| 色悠悠久久久久| 亚洲精品电影网站| 日韩一区二区三区在线播放| 亚洲美女视频网| 一个色综合导航| 国产精品免费视频xxxx| 上原亚衣av一区二区三区| 5278欧美一区二区三区| 国模gogo一区二区大胆私拍| 久热精品视频在线观看| 亚洲a成v人在线观看| 日韩hd视频在线观看| 亚洲人成伊人成综合网久久久| 久久韩剧网电视剧| 中文字幕亚洲一区二区三区五十路| 成人免费在线视频网址| 成人国产精品一区| 日本不卡免费高清视频| 伊人亚洲福利一区二区三区| 91精品免费久久久久久久久| 国产女人精品视频| 一区二区三区四区视频| 欧美中文在线字幕| 91人人爽人人爽人人精88v| 中文字幕亚洲欧美日韩高清| 成人黄色免费网站在线观看| 亚洲肉体裸体xxxx137| 久久99国产综合精品女同| 亚洲第一精品夜夜躁人人爽| 国产在线一区二区三区| 亚洲成av人片在线观看香蕉| 欧美日韩在线观看视频小说| 亚洲国产精品久久| 欧美大肥婆大肥bbbbb| 91国自产精品中文字幕亚洲| 91精品久久久久久久久| 欧美成年人网站| 久久精品亚洲94久久精品| 黄色成人在线免费| 国产精品视频999| 97精品国产97久久久久久| 欧美在线视频在线播放完整版免费观看| 久久999免费视频| 欧美激情在线一区| 亚洲精品资源美女情侣酒店| 精品亚洲精品福利线在观看| 久热爱精品视频线路一| 色无极影院亚洲| 亚洲aa中文字幕| 欧美专区在线观看| 亚洲精品日韩激情在线电影| 亚洲老板91色精品久久| 亚洲美女久久久| 亚洲国产成人爱av在线播放| 中文字幕精品www乱入免费视频| 久久av.com| 亚洲色图35p| 日韩免费中文字幕| 国产成人精品亚洲精品| 成人国产在线激情| 亚洲影影院av| 国产欧美一区二区三区四区| 亚州成人av在线| 大伊人狠狠躁夜夜躁av一区| 国产精品日韩在线一区| 九九九热精品免费视频观看网站| 国产婷婷97碰碰久久人人蜜臀| 国产小视频国产精品| 人九九综合九九宗合| 日韩综合中文字幕| 夜夜嗨av一区二区三区免费区| 久久综合伊人77777| 欧美成年人视频网站| 国产剧情久久久久久| 欧美成人激情图片网| 国产精品极品美女在线观看免费| 久久久午夜视频| 久久精品久久久久电影| 亚洲欧洲偷拍精品| 亚洲成人激情在线观看| 91av在线免费观看| 黑人与娇小精品av专区| 日韩精品视频免费专区在线播放|