Android系统中mount共享文件夹

在Android上挂载(mount)一个CIFS文件系统(就是大家喜闻乐见的网上邻居)是不是很蛋疼?不过我倒是觉得蛮有用的。比如家里有一台装满各种高清电影(别问我怎么收集的,只是举个栗子)的PC,就可以通过这种方法在Android平板上通过Wifi随意播放啦。

以前用过一个叫CifsManager的应用,但是用起来很麻烦,还得自己去找系统对应的ko什么的,就干脆自己用命令行搞了。

首先,你需要root你的Android机器,这一步网上教程多得很。

然后,在设备上装个Terminal,或者使用adb shell,或者你想装ssh server也行,总之就是要能在上面执行脚本。

接着,使用如下命令看看你的系统是否支持cifs:

1
cat /proc/filesystems

如果你在列表里看到cifs就可以继续了,不然…… Google一下吧。

执行如下命令进入root环境:

1
su --mount-master

然后就可以mount了:

1
busybox mount -t cifs //192.168.1.10/share /mnt/cifs/share -o unc=\\\\192.168.1.10\\share,username=xxx,password=xxx

这里假设你的共享路径是 //192.168.1.10/share,用户名和密码自己替换去。

最后,说一下su命令的--mount-master参数。从Android某个版本(好像是4.2?)开始加入了一些限制,使得一个程序mount的目录无法被其他程序看到,而这个mount-master参数就是用来破这个的。至于这个参数在你的系统中是否好使,试试就知道啦。

更新:Lollipop支持

今天把系统升级到Lollipop之后发现从非root用户运行的应用无法访问mount的文件夹了。经过Google,找到原因是SELinux作怪。简单有效的解决方案是,暂时禁用SELinux:

1
setenforce Permissive

当然,为了安全起见,在用完mount之后别忘了恢复:

1
setenforce Enforcing