家里有一台闲置的小米8(dipper),已经提前解锁Bootloader,中考后就想着在上面架设linux终端跑点东西

准备过程

所需材料:

  1. 安卓手机一台
  2. 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 安装

选择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
2
wget -O https://getfrp.sh/d/frpc_linux_arm64_noupx
chmod 755 frpc

运行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发行版,体验会好很多

注:

  1. Docker需要内核支持,Android手机的内核是基于Linux魔改过的,无法运行Docker,因此在Android上就需要自行修改编译内核(Android手机的内核一般都是开源的)

附小米内核源码仓库 https://github.com/MiCode/Xiaomi_Kernel_OpenSource

clone以后可以自己先编译测试一下,再添加kernelsu、docker等特性编译(不然容易出问题

  1. sakurafrp也可以选择其他替代品,如mefrp,在实名认证和带宽方面更友好
  2. 可以用 caddy 自动配置tls,详见另一篇文章