给老手机部署上Alist服务
家里有一台闲置的小米8(dipper),已经提前解锁Bootloader,中考后就想着在上面架设linux终端跑点东西
准备过程
所需材料:
- 安卓手机一台
- windows电脑一台
安卓手机推荐解锁bl并root,方便后续实现插电运行,避免电池损耗鼓包,后续也以root为准
国内开放解锁bl的手机品牌有:小米、一加、oppo、realme
(小米为绑定后7天解锁,一加可以直接解锁,oppo、realme需要申请名额很难)
有些较老安卓机可以直接fastboot解锁另说
刷入合适的刷机包
由于手上的小米8当时更新到了拉胯的MIUI12.5,又卡又费电不适合长期运行,所以决定回滚到MIUI10.3.5
如果手机当前状况良好可以不管
具体过程参照
https://www.coolapk.com/feed/45223331
提前下载所需应用
解锁bl以后会清空手机数据,到时候一个一个下载很麻烦,所以提前下好,节约时间
手机应用列表:
Magisk Delta : https://github.com/HuskyDG/magisk-files/releases
Termux : https://github.com/termux/termux-app/releases
AccA : https://github.com/MatteCarra/AccA/releases
MT管理器 : https://www.coolapk.com/apk/bin.mt.plus
电脑所需:
Miflash : https://pan.cqlkc.top:29565/123
Fastboot工具箱 : https://pan.cqlkc.top:29565/123
提前准备boot镜像
首先在手机设置中确定系统版本,如MIUI10.3.5
在相关渠道找到该版本的线刷包(fastboot刷机包)
经过几次解压后,打开Image文件夹,找到boot.img拷贝到手机中备用


操作流程
Root 手机(可选)
注:需要解锁Bootloader
安装Magisk
安装Magisk Delta,这是Magisk的一个好用的第三方分支

打开后,在主页找到Magisk 安装

选择选择并修补一个文件,选项不用打钩
在文件管理中找到先前准备的boot.img进行修补

跑码跑到最后提示Done即为成功
再将修补好的boot.img(形如”magisk_patched_XXXXX.img”)拷贝至电脑
将手机关机,同时按住电源键和音量-键,出现Fastboot标志后松手,连接电脑
打开fastboot工具箱中的“打开CMD命令行.bat”
输入fastboot flash boot 修补好的boot镜像
配置AccA、Termux
重启手机,安装Termux、AccA
打开Magisk Delta
在设置中开启Magisk Hide和强制使用超级用户列表
在超级用户列表中勾选系统界面、设置、以及Termux和AccA
打开AccA,授权超级用户权限

在配置一栏启用Default,并编辑开启电池闲置优先模式

配置 Termux
在系统设置中,将Termux的后台管理设为“无限制”
(各品牌UI设计不尽相同,不做阐释)
接下来就比较轻松了,Termux完全可以当成正常的Linux终端使用(补:完全不能!!!
(下载软件时注意架构为ARM64)
固定 局域网IP
在手机中WLAN设置中,将IP分配方式设置为静态,记住这一IP
如图

部署 Alist
Alist是一个轻量级的网盘管理项目,可以挂载很多网盘
这里尝试部署Alist项目在手机上
首先在Termux中输入
1 | pkg install alist |
接着输入
1 | alist admin |
以确认admin密码
然后启动服务即可
1 | alist server |
这样Alist就运行在5244端口上了
在同一局域网内的设备,可以通过IP:端口的方式打开Alist面板
如192.168.31.77:5244
但是这样只能在内网访问,很不方便,需要将其开放至外网
部署内网穿透
推荐服务商SakuraFrp
提供2条隧道,10Mbps网速,以及内地节点使用
下面以SakuraFrp为例部署内网穿透
SakuraFrp网页端配置
注册账号并进行实名认证(或者不实名使用日本NTT节点也可)
服务-隧道列表创建隧道,在普通节点中选择一个合适的节点

这里我选择了离得比较近的成都电信7节点
隧道类型为TCP隧道,本地IP选择0.0.0.0
本地端口为5244
远程端口随意,之后访问要用到
自动HTTPS一栏要注意,如果选择自动会出现证书错误,影响体验
因此建议输入自己的域名,我这里输入pan.cqlkc.top
到这里就创建成功了
接下来在操作中,选择配置文件,下载配置文件保存,后续要用
SSL证书配置
由于绑定到了自己的域名下,因此需要自己去申请SSL证书
建议使用FreeSSL申请免费证书


如图选择即可,CSR选择离线生成,用他提供的KeyManager软件导出Nginx格式的证书(包含.key和.crt两个格式的文件)

重命名证书为 你的域名.key 和 你的域名.crt
如 pan.cqlkc.top.crt
完成后拷贝到手机备用
Termux文件交互
安装并打开MT管理器,按要求授权后点击左上角,再点击菜单右上角的三个点添加本地储存,选择Termux即可


然后将frpc.ini、网站证书一起复制到根目录
Termux端配置
根据frpc 基本使用指南 | SakuraFrp 帮助文档 (natfrp.com),我们这里要使用的是Frpc(建议按照下列步骤进行,原指南不适用于Termux环境)
首先我们完善一下Termux组件
1 | pkg install wget vim aria2 -y |
然后下载frpc并授权(可能会遇到TooManyRequests报错,等一会再下载即可)
1 | wget -O https://getfrp.sh/d/frpc_linux_arm64_noupx |
运行frpc
1 | ./frpc |
如无误,会在3秒后自动载入配置文件并提示TCP隧道启动成功
并提示你通过某个域名:端口连接隧道
这时回到DNS网站,添加CNAME类型解析,记录值为提示域名

但此时alist服务还没有运行,我们还需要将两者同时运行
回到Termux,按Crtl+C退出frpc
输入
1 | alist server & ./frpc |
大功告成,接下来通过你绑定的域名打开Alist吧
(记得带端口号
2023.8.27更新
Termux 的文件结构是被魔改过的,而且在权限上有些bug
所以有能力刷机或者root手机的建议不再使用 Termux 部署 linux
可以使用 Ubuntu Touch (推荐)或者 PostmarketOS 等原生Linux发行版,体验会好很多
如果原生Linux对于使用的手机缺少驱动支持,再考虑使用 Linux Deploy 等在chroot容器上运行Linux发行版,体验会好很多
注:
- Docker需要内核支持,Android手机的内核是基于Linux魔改过的,无法运行Docker,因此在Android上就需要自行修改编译内核(Android手机的内核一般都是开源的)
附小米内核源码仓库 https://github.com/MiCode/Xiaomi_Kernel_OpenSource
clone以后可以自己先编译测试一下,再添加kernelsu、docker等特性编译(不然容易出问题
- sakurafrp也可以选择其他替代品,如mefrp,在实名认证和带宽方面更友好
- 可以用 caddy 自动配置tls,详见另一篇文章