找出android上的fuses mountpoints

时间:2014-01-17 12:06:41

标签: android symlink fuse

我正在开发dSploit应用程序的gentoo提取器,我发现了一个问题。

现在用户可以为gentoo root选择一个自定义目录, 我们必须确保我们可以在该文件夹中创建符号链接。

从android 4.2及以上版本,存储基础架构使用FUSE。 创建安装ext FS的符号链接很好。 创建安装了FUSE的符号链接将失败。

root@mako:/ # ln -s /system /storage/emulated/0/gentoo/test
link failed Function not implemented
root@mako:/ # ln -s /system /data/media/0/gentoo/test

这是因为/storage/emulated/0/data/media/0的保险丝绑定挂载。

我认为解决方案是找到装载的位置和方式。

我怎样才能获得FUSE坐骑? /proc/mount会将/dev/fuse显示为源块设备。

我需要说些什么:

source destination
/data/media/0 /storage/emulated/0

为了将/storage/emulated/0替换为/data/media/0并让符号链接正常工作。

提前感谢任何帮助和建议。

- tux_mind

2 个答案:

答案 0 :(得分:1)

我找到了一个解决方法/黑客来列出它们。

当您在挂载点上打开文件时,保险丝FS处理程序也会打开它。

我使用了这些信息并编写了一个使用proc来查找源目录的小型C程序。

如果您对project is hosted on github感兴趣。

问候,tux_mind。

答案 1 :(得分:1)

我使用的方式是绑定挂载而不是符号链接

  1. 复制而非删除,因为mv无法跨文件系统工作

    cp -a /sdcard/DCIM /Removable/MicroSD/DCIM
    rm -r /sdcard/DCIM
    
  2. 创建挂载点以绑定SD卡上的DCIM

    mkdir /sdcard/DCIM
    
  3. Finaly bind mount:

    mount -o bind /Removable/MicroSD/DCIM /sdcard/DCIM
    
  4. 这项工作正常,但重启后,您将不得不重新安装绑定