通过网络,让你的手机容量跟你的电脑硬盘容量一样大!仅限安卓

原理:用一台电脑或者路由器、服务器等设备通过samba协议共享一个目录,通过局域网或互联网的方式与安卓设备相连接,然后安卓设备将共享的目录挂载进安卓设备系统内的一个目录。挂载成功后,你的手机容量大小取决于你硬盘或者硬盘组的大小,500G硬盘共享就500G容量,10TB的硬盘共享就是10TB容量!如果你路由或者电脑做了端口映射,把samba端口:137、138、139、445都映射出去,然后安卓设备在不同的网络只要挂载你映射对应的域名&IP即可实现私有云模式(无论走到哪,都能实时访问、写入你的电脑)

经测试,国产手机(安卓4.4或更高版本系统)、sony手机(安卓4.12以上或更高系统)、三星手机&平板(安卓4.4以上或更高系统),谷歌Nexus系列手机(安卓4.4以上或更高系统),还有CM10、CM11、CM12、CM13均支持cifi协议,且亲测可以用本文介绍办法!

此方法有一定局限性,欢迎测试&建议。(此办法并非网上流传的那些用各种软件例如ES文件管理器类似的samba访问模式,网上那些只是访问,仅访问的文件管理器才能读取共享内容;本文介绍的是挂载,就像内存卡一样挂载进入在系统中,读写权限也是跟内存卡或者机身内存一样的权限!)

第一、
局限性:
1、仅可用于安卓设备
2、需要root权限
3、支持cifi协议
4、重启可能会失效
5、需要支持samba协议的设备并与手机同在一个局域网(需要一台电脑或者路由器或者别的设备在网络中运行samba共享,samba共享也就是在windows中常见到的系统自带文件共享功能)当然,文章开头也说了,有做端口映射的另当别论。

如果以上5个条件都允许,那理论上基本可以实现了。

第二、
需要用到的软件:
1、Busybox模块
2、RE文件管理器(其他类似软件也可以)
3、终端模拟器
4、root权限管理器(一般取得了root设备也具备有)

以上软件下载地址:
网盘:http://pan.baidu.com/s/1kUGcdBh

本地下载:
Busybox模块.apk

终端模拟器.apk

RE文件管理器.apk

第三个条件一般人可能不知道是什么东西,在此,我放一张图,
Screenshot_2016-07-22-14-00-46.png
大家仔细看nodev cifi那一行,如果你的安卓设备没有这样的字样,那就不用折腾了。
具体方法:安装终端模拟器,然后输入su后回车,以便先取得root权限,在root权限管理器提示是否给予授权的时候我们选择允许。
然后输入:cat /proc/filesystems后回车,此时将会弹出上图所示内容。

如果有支持cifi字样,恭喜你,你可以继续折腾!

Screenshot_2016-07-22-13-59-39.jpg

本次演示的设备是谷歌Nexus5(安卓4.4.4版本系统)

装上Busybusy模块、RE文件管理器

先来装上Busybox并打开,首次打开将需要给予root权限,然后等待初始化到100%。
然后选择智能安装,等待提示安装成功

Screenshot_2016-07-22-15-07-17.png

Screenshot_2016-07-22-15-07-24.png

安装busybox后,打开终端模拟器,输入busybox后回车,将会出现下图所示内容证明busybox安装成功。
Screenshot_2016-07-22-15-07-50.png



Screenshot_2016-07-22-14-05-17.png
用RE管理器打开/storage查看设备挂载外设储存器状况,由上图可见,仅有一个sdcard0(Nexus5不可加外设储存卡,故此可知该sdcard0便是机身储存了)不过不是所有设备都是这样命名规则和有些设备可以安装外置储存卡的命名规则也不不一样,具体情况视设备而定!

打开终端模拟器,开始干活!

Screenshot_2016-07-22-14-04-28.png

上图我一共输入了5个命令,下面我来分析一下这些命令:

su

mount -o rw,remount /

mkdir /storage/sdcard1

su --mount-master

busybox mount -t cifs //192.168.10.1/sda6 /storage/sdcard1 -o unc=\\\\192.168.10.1\\sda6,username=root,iocharset=utf8

第一行,之前也出现过,是让终端模拟器取得root权限并切换用户为root

第二行,让/目录改为可读写状态(从安卓4.0开始,谷歌限制了/的自由创建功能,shell环境下必须先执行该命令才可以写东西)

第三行,在/storage下创建一个名为sdcard1目录,此目录稍后用于挂载别设备共享出来的samba目录

第四行,挂载之前,需要将mount取得最高权限,从安卓4.12之后谷歌封杀了mount随意挂载功能,挂载前需要执行该命令

第五行,此为最重点一行,挂载需要用到busybox模块,也是刚才装busybox模块的原因;192.168.10.1这个为共享机的ip,且必须与你手机共一个局域网,/sda6这个为你的共享机所共享的目录共享名(共享目录名不一样等于共享名,具体要看你配置共享时的配置)username这个为共享机共享时配置允许读写的用户,iocharset=utf8这个为挂载以utf-8的形式执行。

此处注意:windows共享的话,需要用用户名共享模式且不需要设置密码(打开目标共享机的时候需要输入用户但不需要密码),Linux下samba模式的话,就需要配置一个用户,且设置密码为空,以openwrt为例子:

配置文件(注意注释那一行,是解开允许root当用户名):

   [global]
    netbios name = |NAME| 
    display charset = |CHARSET|
    interfaces = |INTERFACES|
    server string = |DESCRIPTION|
    unix charset = |CHARSET|
    workgroup = |WORKGROUP|
    browseable = yes
    deadtime = 30
    domain master = yes
    encrypt passwords = true
    enable core files = no
    guest account = nobody
    guest ok = yes
    # invalid users = root
    local master = yes
    load printers = no
    map to guest = Bad User
    max protocol = SMB2
    min receivefile size = 16384
    null passwords = yes
    obey pam restrictions = yes
    os level = 20
    passdb backend = smbpasswd
    preferred master = yes
    printable = no
    security = user
    smb encrypt = disabled
    smb passwd file = /etc/samba/smbpasswd
    socket options = TCP_NODELAY IPTOS_LOWDELAY
    syslog = 2
    use sendfile = yes
    writeable = yes
    

后台配置root密码命令:smbpasswd -a root ,输入之后连续回车两次,这样root的密码就是空的

如果共享并非按照需要用户名&空密码的方式的话,挂在后将不支持utf-8,状况就是除了英文和数字之外的文件和文件夹都无法显示出来!!

如果以上几条都执行成功(无消息返回将代表执行成功),此时打开RE管理器进入/storage/sdcard1应该能发现共享机的文件了,但此时不推荐打开,需要在终端模拟器执行多一条命令:

setenforce Permissive

Screenshot_2016-07-22-14-04-57.png

此命令是允许所有用户将可访问sdcard1目录,否则仅有root用户才可以访问。

至此,操作步骤完毕,看看sdcard1状态,如下图,我是在我的路由器上共享一个2T的硬盘,整个挂载。看容量便知
Screenshot_2016-07-22-14-05-30.png

一口气存入了5000多首无损歌曲,手机瞬间变成播放器,不用再担忧容量不足的问题了。

Screenshot_2016-07-22-15-42-12.png

添加新评论