前言
Termux真是个好东西,把Android手机当Linux服务器来用,手机还有一个特点就是超低的功耗,我的小米9待机2瓦,满载4.5瓦,秒杀市面上所有x86_64架构低功耗主机,还有一点稳定性,手机作为平时24小时不关机的玩意,还被人长时间各种折腾还不坏的东西,稳定性确实相当可以了,如果那它来做NAS岂不美哉?
淘汰手机做服务器有这些好处:
1、耗电量极低,终极节能方案
2、0噪音
3、纯固态硬盘,速度快
4、超级超级便携(虽然无需携带)
5、无需购买UPS,自带
6、无需连接显示器,自带
7、发热量低,放铁板上即可解决散热,无需额外散热设备
8、无需网线,WIFI6速度极快
9、占地面积极小,家里随便一个犄角旮旯就能开服
10、成本极低,淘汰手机几乎没有成本,二手翻新机价格也相当便宜
有人说性能不够,瞎说!拿我写的jcpu-benchmark跑一下分就知道了,单核成绩已经吊打老E5处理器了,多核甚至和低端E5一较高下,开个Samba服务器要什么性能,我连MC服务器都试过,开服都能带得动。
Java版CPU性能测试工具: 该项目借鉴了SuperPI的CPU性能计算方式,通过多轮迭代估算出当前CPU的性能成绩。由于项目由Java编写,因此可以在各种平台都能顺利执行。Java版的CPU Benchmark。欢迎大家前来维护该项目。
准备材料
1、一台安装了Magisk后可以获取到root权限的手机
2、Termux APP
3、一个固态硬盘
4、硬盘盒
5、OTG+PD充电二合一接口
6、USB Hub(可选),可接多个硬盘
7、Filezilla Client
如图所示:
Termux准备阶段
由于我搞这玩意走了很多弯路,耗时比较长,目前步骤全部靠回忆,可能有疏漏,请原谅,如果有问题的地方请及时提出,我会及时修改
Termux去Github上下载即可,这里不再赘述
1、切换源
termux-change-repo
2、更新源
apt update
3、开启共享目录
termux-setup-storage
这里会手机弹出是否运行使用存储,打开即可
4、查找自己的用户名和修改密码
whoami
passwd
安装SSH,远程连接手机
# 安装openssl
pkg install -y openssl
# 安装openssh
pkg install -y openssh
安装完成后查看手机ip地址
ifconfig
启动SSH远程连接,端口号为8022
sshd
使用FinalShell连接手机
其中ip地址就是通过ifconfig得到的,端口8022是默认端口,用户名通过whoami得到,密码通过passwd自行修改得到,这样我们就能通过电脑连接手机了。
至于为什么要这么做,因为后面命令多得很,要是靠手指在手机上敲就太麻烦了!而且这里会用到u0_xxx普通用户和root用户,手机没法开多个窗口操作。
获取root,安装Samba
pkg install root-repo
su
安装完成后输入su,手机如果有Magisk,就会提示是否赋予Termux root权限,这个当然选择是
如果没有Magisk,那很遗憾,Termux无法读取外部存储,也就无法读取外接的SSD中的数据了,这像下图所示:
安装Samba
pkg install samba
恕我直言,我真是没想到Termux的系统仓库里真的会有Samba,就连AI都告诉我要去手动编译源码才行。
安装完成后Samba是不会启动的,当然现在也不要启动Samba,因为根本没有配置文件。
调整Samba配置文件
整个Samba说到底就一个配置文件是核心,其他都是浮云,Termux仓库都有编译完成的Samba了,算是帮我们解决了90%的难题了。
Samba配置文件的位置
这里要请到我的老朋友Filezilla
通过站点管理器新建一个站点,协议使用SFTP(熟悉Linux的小伙伴应该再熟悉不过了),填上手机的ip、端口(8022)以及用户名、密码就能通过SFTP连接到手机了。
进入路径:
/data/data/com.termux/files/usr/share/doc/samba
里面有一个smb.conf.example文件,把它下载下来,这样你就不需要用到vi去改它了,因为改的东西实在太多了,就这一个配置文件我调了几小时啊!!!!不是看不见目录,就是打不开,要么就是不用用户名密码就能读取,目前你们能看到完整版都是我辛辛苦苦调出来的
smb.conf文件内容
以下是smb.conf文件所有的内容,注意文件名,要把.example去掉!
# vim: filetype=samba
[global]
; these are very recommended to have, even if maybe superfluous
workgroup = WORKGROUP
unix password sync = no
pam password change = no
obey pam restrictions = no
passwd program = /data/data/com.termux/files/usr/bin/true
add user script = /data/data/com.termux/files/usr/bin/true
add group script = /data/data/com.termux/files/usr/bin/true
add user to group script = /data/data/com.termux/files/usr/bin/true
add machine script = /data/data/com.termux/files/usr/bin/true
delete user script = /data/data/com.termux/files/usr/bin/true
delete user from group script = /data/data/com.termux/files/usr/bin/true
delete group script = /data/data/com.termux/files/usr/bin/true
rename user script = /data/data/com.termux/files/usr/bin/true
name resolve order = lmhosts host bcast
bind interfaces only = yes
interfaces = 127.0.0.0/8 wlan0
hosts allow = 192.168.0.
server string = Samba on Termux
security = user
server role = standalone
delete readonly = yes
inherit permissions = yes
; Make smbd do less and announce nothing
; for automatic discovery, you may need to remove some of these
local master = no
preferred master = no
lm announce = no
multicast dns register = no
host msdfs = no
dns proxy = no
allow dns updates = disabled
dns update command = /data/data/com.termux/files/usr/bin/false
server services = smb
dcerpc endpoint servers = rpcecho
; if you disable NetBIOS, which enables automatic discovery, 1139 can be removed from smb ports
;disable netbios = yes
; remember: ports < 1024 cannot be bound to by non-root processes
; Windows can only see SMB servers on port 445, so if your phone is rooted
; use iptables to redirect requests for port
; 445 to, say, 4445 (capabilities may work instead. no clue)
smb ports = 445 139
max connections = 6
max smbd processes = 8
deadtime = 15
; disable guest access
map to guest = Never
restrict anonymous = 2
; basic attempt at performance tuning for my phone
; change as necessary for your device
;aio read size = 16384
aio write size = 0
use sendfile = yes
min receivefile size = 16384
socket options = TCP_NODELAY SO_KEEPALIVE
oplocks = yes
level2 oplocks = yes
kernel oplocks = no
strict locking = no
max stat cache size = 1024
; turn off things that cannot be set on sdcardfs and vfat filesystems
nt acl support = no
unix extensions = no
ea support = no
store dos attributes = no
map archive = no
map hidden = no
map readonly = no
map system = no
log file = /data/data/com.termux/files/usr/var/log/samba/log.%m
log level = 0
max log size = 50
;logging = syslog
;syslog only = yes
;syslog = 0
enable core files = no
; disable printing support as much as possible
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
show add printer wizard = no
max print jobs = 0
lpq command = /data/data/com.termux/files/usr/bin/false
lprm command = /data/data/com.termux/files/usr/bin/false
print command = /data/data/com.termux/files/usr/bin/false
#============================ Share Definitions ==============================
; remember to run termux-setup-storage first
[external]
comment = microSD
path = /mnt/media_rw/F2DB-002C
vfs objects = aio_pthread
aio_pthread:aio open = yes
read only = no
browseable = yes
writable = yes
guest ok = no
fstype = exFAT
admin users = dct
valid users = dct
; force group = media_rw
; create mask = 0770
; force create mode = 0770
[dct-home]
comment = microSD
path = /data/data/com.termux/files/home
vfs objects = aio_pthread
aio_pthread:aio open = yes
read only = no
browseable = yes
writable = yes
guest ok = no
admin users = dct
valid users = dct
; force group = media_rw
; create mask = 0770
; force create mode = 0770
配置文件说明
21行:这里需要改成你的局域网的IP地址,否则无法使用
47行:Termux的默认配置文件中的端口为4445和1139,因为1000以下端口如果要使用必须使用root才行!普通用户使用1000端口会报错!然而Windows默认只能使用445端口,因此必须使用root用户才能完成本次博客中的内容!因此我这里已经改成成了445和139了,如果没有root权限则需要改回去!
102行:/mnt/media_rw/F2DB-002C是SSD自动挂载的路径,你们连上去后可能名称会有所不同,这个肯定是要改的!使用到root权限的MT管理器可以看到挂载后的文件路径
110、111、125、126行:这里需要注意了,我创建过一个叫dct的用户,你们可以改成别的,但是用户后面需要创建!
118行:这里写的是你Termux的根目录,你可以方便的去上传本地文件上去了,而不是使用Filezilla
上传smb.conf
使用Filezilla将smb.conf文件上传到
/data/data/com.termux/files/usr/etc/samba
这个目录下,/data/data/com.termux/files/usr/etc目录下默认没有samba目录,需要自行创建
创建Samba用户
我发现啊,这一步必须要root才行
也就是说,必须是root用户才能使用-a来添加Samba用户,没办法切换到root用户吧
su
cd /data/data/com.termux/files/usr/bin
# 这里的dct可以换成你自己的用户名
./smbpasswd -a dct
在输入两遍密码后,Samba用户就有了
启动Samba服务
这里必须用root启动,因为端口号是小于1000的
cd /data/data/com.termux/files/usr/bin
./smbd -s /data/data/com.termux/files/usr/etc/samba/smb.conf
查看Samba启动情况
ps -ef |grep smb
查看Samba日志
如果启动有问题,或者无法访问,可以找到Samba日志去找到问题原因,路径为:
/data/data/com.termux/files/usr/var/log/samba/log.smbd
Windows连接Samba
建议在此电脑右键,“添加一个网络位置”,Win11好像有bug,在地址栏输入可能会跳转不过去
输入你手机的IP地址,点击右边的“浏览”按钮
如果出现Samba中配置的目录,说明你已经成功了70%了,直接挂载目录爽歪歪
挂载的时候可能要求你输入用户名和密码,这里输入你自己smbpasswd -a的用户名和密码即可。
双击打开该目录,如果能顺利打开,恭喜!这项具有挑战精神的任务就成功了!你获得一个局域网内超低功耗还自带UPS的简易NAS了,性价比杠杠的!
要是失败了,建议你继续探索一番,或者来我的Q群170618278吹水,我这么个大忙人不一定有时间来帮你,嘻嘻!
版权归原作者 DCTANT 所有, 如有侵权,请联系我们删除。