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

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

內置存儲fuse文件系統

2019-11-09 14:26:46
字體:
來源:轉載
供稿:網友

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 反射

下一篇:RecyclerView源碼剖析

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一区第一页| 久久久久久香蕉网| 欧美日韩国产一区二区| 色久欧美在线视频观看| 精品久久久999| 久久视频在线观看免费| 4p变态网欧美系列| 亚洲美腿欧美激情另类| 日韩网站免费观看高清| 久久久久久欧美| 亚洲石原莉奈一区二区在线观看| 国产精品一区二区三区在线播放| 精品女同一区二区三区在线播放| 日韩欧美在线观看视频| 中文字幕不卡av| 亚洲激情电影中文字幕| 俺去亚洲欧洲欧美日韩| 精品视频在线播放色网色视频| 69av成年福利视频| 日韩一区二区福利| 91精品国产自产在线老师啪| 欧美一区二区三区精品电影| 5278欧美一区二区三区| 久久精品中文字幕免费mv| 亚洲最新av在线网站| 日韩欧美主播在线| 久久久国产成人精品| 91理论片午午论夜理片久久| 欧美午夜宅男影院在线观看| 日韩av中文字幕在线| 欧美性xxxx极品高清hd直播| 成人a级免费视频| 97免费中文视频在线观看| 亚洲性无码av在线| 久久久久久久成人| 日本国产一区二区三区| 97在线免费观看视频| 日韩欧美黄色动漫| 国产精品国产三级国产aⅴ9色| 成人网在线免费观看| 亚洲丝袜av一区| 久久久天堂国产精品女人| 91爱爱小视频k| 日本久久亚洲电影| 亚洲老头老太hd| 亚洲国产中文字幕久久网| 欧美精品免费播放| 日本精品一区二区三区在线| 成人免费淫片aa视频免费| 成人精品一区二区三区电影黑人| 国产精品海角社区在线观看| 国产色综合天天综合网| 亚洲欧美日韩精品久久奇米色影视| 亚洲欧洲高清在线| 亚洲xxxx妇黄裸体| 亚洲精品久久久久中文字幕欢迎你| 欧美亚洲一级片| 日韩网站免费观看高清| 国产精品午夜视频| 国产精自产拍久久久久久| 国产精品爽黄69| 国产精品成人品| 久久久久久久999精品视频| 亚洲一区二区三区在线免费观看| 久久亚洲精品视频| 久久99国产精品自在自在app| 久久精品男人天堂| 97福利一区二区| 亚洲国产成人在线视频| 久久国产视频网站| 欧美激情2020午夜免费观看| 日韩中文字幕视频在线观看| 91久久国产精品| 亚洲性av网站| 国产日本欧美一区二区三区| 欧美精品videofree1080p| 亚洲欧美中文字幕在线一区| 日韩精品极品在线观看播放免费视频| 亚洲美女视频网站| 最新国产成人av网站网址麻豆| 欧美黑人极品猛少妇色xxxxx| 九九久久久久久久久激情| 国产精品激情av在线播放| 欧美日韩福利视频| 91色视频在线导航| 深夜成人在线观看| 国产精品久久久久久久久久ktv| 91色在线视频| 欧美特黄级在线| 欧美疯狂性受xxxxx另类| 韩曰欧美视频免费观看| 精品国偷自产在线视频| 国产精品日韩在线一区| 欧美黑人又粗大| 中文字幕日韩精品有码视频| 日韩美女在线播放| 欧美精品免费播放| 日韩国产中文字幕| 伊人亚洲福利一区二区三区| 国产精品久久久久不卡| 国产丝袜一区视频在线观看| 久久91亚洲精品中文字幕| 国产一区二区免费| 中文国产亚洲喷潮| 亚洲国模精品一区| 亚洲欧美制服综合另类| 国产精品国产三级国产专播精品人| 日韩不卡中文字幕| 国产精品a久久久久久| 亚洲精品国产福利| 欧美人与物videos| 国产在线视频91| 欧美美女18p| 91po在线观看91精品国产性色| 亚洲人成电影网站色xx| 欧美性jizz18性欧美| 国产亚洲精品成人av久久ww| 在线播放日韩欧美| 国产精品丝袜久久久久久不卡| 国产免费一区二区三区香蕉精| 在线观看欧美成人| 亚洲精品久久久久久久久久久久| 97精品国产97久久久久久免费| 亚洲人成网站色ww在线| 一本色道久久综合狠狠躁篇怎么玩| 日韩精品高清在线| 国内伊人久久久久久网站视频| 视频在线观看99| 这里只有精品视频在线| 亚洲天堂网站在线观看视频| 国产精品久久久久免费a∨| 一本一本久久a久久精品牛牛影视| 黑人巨大精品欧美一区二区一视频| 另类视频在线观看| 蜜臀久久99精品久久久无需会员| 欧美激情国产高清| 欧美成人免费大片| 久久久久久综合网天天| 久久久精品在线| 欧美成人一二三| 久久99久久亚洲国产| 日韩电视剧在线观看免费网站| 久久免费在线观看| 欧美日产国产成人免费图片| 亚洲加勒比久久88色综合| 亚洲天堂免费在线| 亚洲天堂免费在线| 97人人爽人人喊人人模波多| 中文字幕亚洲在线| 久久精品欧美视频| 国产精品揄拍一区二区| 日韩暖暖在线视频| 91精品国产91久久久| 成人福利网站在线观看| 成人乱人伦精品视频在线观看| 亚洲国产精品久久久久| 97视频com| 亚洲精品videossex少妇| 国产精品永久免费视频| 91久久国产精品| 一区二区在线视频| 欧美老女人性视频| 成人免费淫片视频软件| 精品中文字幕在线观看|