在上一篇折腾的文章中介绍了已经root的Android手机部署Linux榨干性能的具体操作
(此处应该有链接,但是我不知道怎么插)
如果折腾完拉一个fastfetch就放那了, 那也太浪费了, 好不容易让已经逝世的Android再次复活, 当然得让它把活干起来, 我们手里不养闲机
跟着上一个教程完整弄完后, 我们拥有了一个标准的ARM Linux系统, 并且已经具备以下特性
- 随着LinuxDeploy开机自启动, 自动获取CPU唤醒锁
- 基本的sysv服务管理, SSH服务能被sysv自动拉起, 开机不需要任何操作就可以SSH连接
- 可以连接外网, 下载/安装和更新软件
由于Android内核限制不支持docker以及systemd, 但是我们可以使用其他的服务管理
在此之前, 需要进行一些小的问题处理
解决联网问题之后, 访问有些HTTPS地址会提示x509, 能ping通域名, 但是无法通过curl等工具实际访问页面
这是因为我们部署的系统太干净了, 缺少基础的根CA证书, 安装一下就能解决
apt update && apt install ca-certificates
安装后还提示509, 可尝试在~/.bashrc中设置环境变量export SSL_CERT_FILE=/etc/tls/cert.pem
- 编辑 /etc/passwd 在对应用户名后将sh更改为bash
- 编辑 ~/.bashrc 取消注释其中要显示颜色的行
source ~/.bashrc # You may uncomment the following lines if you want `ls' to be colorized: export LS_OPTIONS='--color=auto' eval "$(dircolors)" alias ls='ls $LS_OPTIONS' alias ll='ls $LS_OPTIONS -l' alias l='ls $LS_OPTIONS -lA'修改完成后重新开启一个SSH连接测试效果
Android 15+版本, Google 引入了极其严格的后台进程限制(Background Execution Limits)和幻影进程杀手(Phantom Process Killer), 像Termux这种应用只要在后台占用的CPU过高, 或者子进程过多(比如超过32个), 可能会被系统杀后台
为避免这些问题, 让服务器稳定运行, 除了配置时提到的允许权限/打开通知/允许后台/电量使用无限制之外, 还可以进行以下操作, 确保万无一失
用termux(root)或者adb shell(root)连接, 打开命令行, 输入su切换root
su # 增加幻影进程的最大数量限制至最大值 (LineageOS上未找到该选项, 但还是执行一下) device_config put activity_manager max_phantom_processes # 禁用幻影进程监控开关 setprop persist.sys.fflag.override.settings_enable_monitor_phantom_procs false
配置好环境之后不要轻易更新系统, 否则可能导致配置失效
若无特殊说明, 命令行都是在chroot中的Linux下执行, 清华源可以按照自己的需要替换, 使用https前先按照第一步处理好ca
cd /etc/apt cp sources.list sources.list.bak sed -i 's/deb.debian.org/mirrors.tuna.tsinghua.edu.cn/g' sources.list apt update # 确保ca-certificates已经安装,https访问正常 sed -i 's/http:/https/g' sources.list apt update apt dist-upgrade
自带的sysv可以用来管理一些提供了sysv脚本的服务, 比如ssh和supervisor, 但很多服务应用可能只提供systemd配置, 或者根本没有提供服务管理配置, 自己手撸sysv的服务管理脚本挺麻烦, 使用supervisor来配置服务会简单很多
apt安装supervisor, sysv设置supervisor自启动
apt install supervisor service supervisor start service --status-all
supervisor的配置文件与日志文件: 配置/etc/supervisor/supervisor.config, 日志/var/log/supervisor
常用命令
supervisorctl reload # 会重启所有管理的进程, 如果只是加载新添加的配置可以运行以下指令 supervisorctl reread # 重新读取配置文件 supervisorctl update # 刷新配置到进程组 supervisorctl help # 查看可用命令 supervisorctl -h # 帮助
若需要创建新的服务, 在/etc/supervisor/conf.d目录下新建服务配置即可管理服务
配置模板如下, 不是每一项都需要
[program:my_service] ; 启动命令,注意这里写绝对路径, 不支持管道/通配符等复杂运算 command=/usr/local/bin/my_server --port 8080 --config /etc/my_server/config.json ; 程序运行的运行目录 (相当于 cd 到这个目录再执行) directory=/opt/my_server/ ; 以哪个用户的身份运行 (强烈建议不要全用 root) user=www-data ; 随 supervisord 启动而启动 autostart=true ; 程序异常退出后自动重启 autorestart=true ; 重启重试次数 startretries=3 ; 环境变量设置 (如果有的话) environment=RUST_LOG="info",NODE_ENV="production" ; 标准输出日志路径 stdout_logfile=/var/log/my_server_out.log stdout_logfile_maxbytes=50MB stdout_logfile_backups=3 ; 错误输出日志路径 stderr_logfile=/var/log/my_server_err.log
包括siyuan在内的一些服务之前在termux篇中也说过, 但是标准的ARM Linux环境兼容性更好, 不容易出现各种奇怪的问题
在Termux中搭建HTTP导航页服务时我没有使用lighttpd而是使用darkhttpd, 就是因为兼容性问题
因此, 我觉得有root时用chroot搭建arm linux环境, 没有root时在termux中用proot搭建arm linux环境才是**选择
在官网下载linux-arm64版本(依据设备架构, 后续以arm64为例)
解压到~/.local/bin/siyuan/
创建supervisor服务配置 /etc/supervisor/conf.d/siyuan.conf
[program:siyuan] directory=/root/.local/bin/siyuan/resources command=/root/.local/bin/siyuan/resources/kernel/SiYuan-Kernel -accessAuthCode mypasswd -lang zh_CN -workspace /root/siyuan -wd /root/.local/bin/siyuan/resources autostart=true autorestart=true startreties=3 stderr_logfile=/var/log/siyuan.err stdout_logfile=/var/log/siyuan.log stdout_logfile_maxbytes=10MB stdout_logfile_backups=3 ;redirect_stderr=true environment=RUN_IN_CONTAINER=1
启动服务, 查看日志
supervisorctl update cat /var/log/siyuan.log
若一切正常, 可以访问http://ip:6806愉快使用
这是一个Web端的VSCode, 在Termux环境下我也尝试部署过, 发现启动正常但是大多数插件都提示不支持Web平台, 在chroot环境下又部署了一个, 发现插件都可以用
下载code-server需要设置代理, 直接使用官方脚本
# 设置为自己局域网内的代理地址 export https_proxy=http://192.168.9.7:10808 # 使用官方脚本安装 curl -fsSL https://code-server.dev/install.sh | sh
如果代理不方便处理, 可以直接从github上下载Linux ARM64版本, 解压到设备上
先运行一次, 生成基础配置文件
code-server # 修改配置文件 nano ~/.config/code-server
配置如下
# 监听地址和端口 bind-addr: 0.0.0.0:8080 # 授权方式 password 或者 none (无密码) auth: password # 密码 password: asdfqwert # 开启自签名cert https (自签名的https浏览器会提示证书不安全, 忽略即可) cert: true
最好开启https访问, 否则会有些功能受限制, 浏览器提示证书风险不用管, 反正只是局域网访问
supervisor服务配置 /etc/supervisor/conf.d/code-server.conf
[program:code-server] directory=/root command=/usr/bin/code-server autostart=true autorestart=true startreties=3 stderr_logfile=/var/log/code-server.err stdout_logfile=/var/log/code-server.log stdout_logfile_maxbytes=10MB stdout_logfile_backups=3
如果扩展安装/下载失败, 可以自己下载, 拖到vscode文件目录中, 命令行安装
code-server --install-extension ./xxxx.vsix
安装自己开发常用扩展, 比如: neo-git-graph, dracula theme, indent-rainbow, render line endings, python, python debugger, godot-tools, godot files, clangd
apt install lighttpd -y
安装完成后已经自动在/etc/init.d目录下创建自启动配置, 运行配置在/etc/lighttpd/lighttpd.conf, 默认网站路径为/var/www/html/
# 开启lighttpd服务 service lighttpd start # 已经可以看到lighttpd服务 service --status-all
访问http://ip:80, 页面正常, 替换页面/var/www/html/index.lighttpd.html
Services List
Services List
打开godot官网: https://github.com/godotengine/godot/releases
下载版本: stable_linux.arm64
虽然不能用图形界面, 但可以headless模式运行, 可以在code-server中配合插件开发调试 (需要添加headless参数), 或者进行CI/DI集成
运行之后提示一个错误:
libfontconfig.so.1: cannot open shared object file: No such file or directory
来搜索解决一下
apt install libfontconfig1
安装后再运行, 不再提示错误
但是提示root用户风险, 可以在.bashrc中添加export GODOT_SILENCE_ROOT_WARNING=1, 之后执行source .bashrc屏蔽掉
语言服务器LSP连接: 代码提示, 自动补全, 文档提示
在code-server中安装godot-tools, godot-files两个扩展
确保godot在path目录中
在godot-tools配置中打开 lsp-headless (launch the LSP as a headless child process)
上述配置若正确无误, 则LSP是可以直接使用的, 不需要手动启动进程
Godot项目调试
打开调试侧边栏, 点击创建一个launch.json, 配置选择”GDScript Godot Debug”, 会生成一个默认配置, 默认生成的调试配置如下
{
"name": "GDScript: Launch Project", "type": "godot", "request": "launch", "project": "${workspaceFolder}", "debug_collisions": false, "debug_paths": false, "debug_navigation": false, "additional_options": ""
}
默认配置直接打断点调试是跑不起来的, 必须在additional_options配置中加上 –headless*参数
直接F5试试, 很棒, 可以正常调试运行, 变量, 堆栈都可以正常显示, 可以拿手机摸鱼开发Godot游戏了!
你们还想看哪些折腾教程呢, 打在评论区吧
- proot下的ARM Linux自启动与服务管理方案
- chroot/proot环境部署a代理
- chroot/proot环境部署Claude Code/Codex
- chroot/proot环境部署OpenClaw/NanoClaw
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/257164.html