开篇废话
我的 LG V30 屏幕在前几个月彻底 GG 了,不过这个洋垃圾也卖不出价格(大概只能卖100),所以就考虑当成一个 arm 服务器用。榨干手机最后一滴价值
很遗憾的是我这台机型并没有人缝合出 Linux 发行版出来,自己技术也不够,所以还是以 Android 作为基底(折腾完后以 Termux 为主)。
将 Android 作为服务器我们应该需要安排以下东西:
- 多种方案远程 (SSH / ADB
/ VNC) - 自动开机
- busybox
- 系统不能加密(不设置锁屏密码基本就 ok)
Android 的选择
一般来说,推荐机器是已经解锁的了机器拿来玩,刷个类 AOSP 不带 GAPPS 的 ROM 应该就差不多的。
为了节省工作量,下带 userdebug 的 Android 感觉是比较好的
userdebug 相比 user 来说,一般会自动开启 adb (全局信任设备) 然后 selinux 很有可能是糊的
adb root
adb disable-verify
作为比较懒的就这样了,不然就要手动加 build.prop
参数之类的。
(当然 手动信任也可以的,不过可能就无法无人值守之类的,网络 adb 就算了,太不安全了)。
adb 开启后就可以直接通过 scrcpy 用 adb 来远程控制手机了~
当然 Magisk 也是需要的,刷机部分不再赘述。
建议安装的 app 们:
- F-Droid (FOSS 商店)
- Termux (在 F-Droid 上下载)
- telegram-sms (如果需要自动收短信)
shell 方面,可以使用 Termux 或者 系统自带的 Terminal (要在开发者选项里面使用)
Magisk
这里我安装了以下几个 Magisk 模块:
- Advanced Charging Controller (ACC)
- Busybox for Android NDK
- SSH for Magisk
ssh
ssh 功能就交给 Magisk 模块完成了,不过密码登录是不可能的,我们需要 (authorized_keys) 才能连上,生成之类的就不再重复了,一吨教程。。。
把 authorized_keys 丢到 /data/ssh/root/.ssh 目录下,然后 ssh root@ip 即可
(另外推荐 Termux 也开个 ssh)
adb 信任
在无屏模式下, adb 信任可能有、难度(因为要物理点击),但是改 adbd 全信任好像又有点不安全的样子,所以我们要找到 Android 存 adb 公钥的地方,这里我们随便搜索下就有答案了。
设备在我们有 ssh 就按照这个方式添加 adb pub keys 到系统即可。
自动停止充电
为了让电池鼓包不会那么快发生,我们需要智能(按需)的充电方案,如果你的 ROM 已经有了大概就不需要再安装 Advanced Charging Controller (ACC) 了,如果没有的话就手动安装然后设置一下。
配套app下载
我设置了 充到 50% 就停止充电,然后低于 20% 的时候再充电。
希望暑假回家的时候不会鼓包
自动开机
希望不出什么意外,自动开机还是要安排一下的,参考原帖,我们需要需要修改系统的 init.rc
文件(或者自己找其它方案)
路径为 /etc/init/hw/init.rc
我们手动编辑里面的 on charger
(也有可能文件在 boot.img 里面,需要自己解包然后加回去,这里不再提供教程因为我拆包以后根本没发现文件)
将
on charger
class_start charger
改成
on charger
setprop ro.bootmode "normal"
setprop sys.powerctl "reboot"
即可
(系统只读的话就不用我多说了吧 mount -o rw,remount /system
)
Termux
程序们大概都在 Termux 里面运行,里面也可以缝合别的发行版(Debian / ArchLinux / Gentoo ….),这里不再赘述。
换源什么的也不用多说了,参考这个。
Termux 里面的环境相比正常的 Linux 很多在于文件路径不一样, /etc -> ~/../usr/etc
或者 /data/data/com.termux/files/
(毕竟 /etc 之类的是 Android 系统要占的)
下面举两个例子参考,其它软件包也是差不多这样~
openssh
这里我们又开了个 ssh,区别于 Magisk 的 ssh 这边是 Termux 内部的。
pkg install openssh
echo "Port 2222" >> /data/data/com.termux/files/usr/etc/ssh/sshd_config
passwd #(输入密码) 或者丢个 authorized_keys 到 ~/.ssh
sshd # 测试
不出意外应该是可以连接了,我们还需要安排开机自动启动。
ssh root@ip -p 2222 #(Termux 特别处理,以 root 登录也还是当前用户)
(systemd 底裤 之类的肯定是不可能存在的,守护/开机自启的话会比较简陋)
下载 Termux:Boot 然后参考官方文档
我的启动 sshd 脚本参考 /data/data/com.termux/files/home/.termux/boot/10-sshd
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
sudo hostname lg # 主机名
sshd
nginx
nginx 有点蛋疼,似乎需要以 root 用户启动才能使用 80 (低于 1024)的端口,即使设置了
sudo setcap cap_net_bind_service=+ep /data/data/com.termux/files/usr/bin/nginx
也不行。
pkg install nginx -y
nginx
然后 http://ip:8080/ 就可以访问了
自动启动脚本 /data/data/com.termux/files/home/.termux/boot/20-root-nginx
#!/data/data/com.termux/files/usr/bin/sh
sudo nginx
# sudo 二进制在 tsu 包里面
关闭屏幕
机器已经摔到,只要屏幕上电就是最大亮度 + 纯白了,耗电 MAX,所以我们需要找办法关闭屏幕。
(亮度设置为0还是一样,这里就直接彻底关闭,当然也不能触摸了)
turnoff_screen.sh:
echo 4 > /sys/class/graphics/fb0/blank
0 应该是恢复,这边就不测试了
使用 Termux 开机自动启动
#!/data/data/com.termux/files/usr/bin/sh
sudo sh /data/data/com.termux/files/home/turnoff_screen.sh
总结
经过这些折腾后,基本上就可以把这玩意当个 mini 服务器了,因为 ta 可以:
- 来电自动开机
- 开机自动运行程序
- 可以远程
至于能开什么服务,我也不知道,也许可以远程跑毒瘤软件,然后跑 node / python 还是很正常的,当成收短信机之类的也不错。
最后希望机器的 watchdog 能正常运行,不会出现死机了要手动长按重启
完