0. 前言
最近一直在关注服务器,俗称小鸡(Viturl Private Server, VPS)。服务器主要看为线路和配置两方面,线路就是网好不好,配置就是性能高低。线路好的机器一般配置低且太贵,配置好的机器不仅贵还线路差,直连基本不可用,笔者没有什么“正经业务”,也不想为此额外付费。
想起我的第二个旧手机 OnePlus 6T。很早就听闻这款手机对于不同的系统适配性很好,搜索了一下果然如此:不仅能刷一些Linux发行版,居然还能刷Windows(给手机装Windows11!还能玩大型游戏?!- Bilibili)。这也激起了我的好奇心:如果手机能刷成Linux,那岂不是能放在家里做一个小型服务器?况且对比x86的整机而言,功耗还很低,省下一部分用来买服务器的钱的同时,也能省不少的电费:)。 一不做二不休,先调研一下可行性。
1. 调研
由于想用来做服务器,所以 Windows 系统并不在我的考虑范围之内。借助 Grok 的搜索能力,帮我圈定了几种系统:
| 发行版 | 推荐 | 基础系统 | 硬件支持概况 | 安装方式 | 说明 |
|---|---|---|---|---|---|
| postmarketOS | 高 | Alpine Linux | WiFi/蓝牙/数据/屏幕/触控/GPU 良好;音频、相机、GPS 部分可用 | fastboot | 最成熟的主线方案 |
| Ubuntu Touch | 高 | Ubuntu + Halium | 通话/SMS/数据/WiFi/蓝牙/相机/GPU 等大多可用 | UBports Installer | 成熟的手机向系统 |
| Sailfish OS | 中 | Linux (Mer Core) | 整体支持较好(社区反馈日常可用) | fastboot / TWRP | 社区维护的替代移动系统 |
| Mobian / Droidian | 中 | Debian | 早期支持,基础功能可用,维护活跃度低 | 较复杂 | Debian 生态 |
| Fedora Atomic | 低 | Fedora | 实验性支持(OP6 有尝试,6T 类似硬件) | 实验性流程 | OnePlus 6T 支持仍在发展中 |
综合考虑下来,还是选择 postmarketOS 作为系统。Alpine Linux 是 Linux 生态中较常见的轻量级发行版之一,有比较好的兼容性同时也比较轻量,对于手机这样的设备而言相对友好。笔者也尝试了刷Mobian,但刷完之后一直无法正常开机。而其他如Ubuntu Touch需要原系统刷机,我解锁bootloader已经清空了数据,不想再进系统,能够直接fastboot线刷最好。
2. 刷机
刷机过程分为以下几步:
- 解锁bootloader(注意,会清空所有数据,先备份)
- 下载postmarketOS镜像
- 连接usb,fastboot线刷
- 移除usb,reboot完成刷机
对于OnePlus6T而言,解bl锁非常容易。进入开发者模式,打开OEM锁和adb调试即可,可以参考视频。
2.1 postmarketOS镜像
OnePlus6T 的代号为 oneplus-fajita。在postmarketOS官网可以找到最新当前最新的版本为v26.06。点开后可以看到有4种不同的图形界面,分别为:
phosh:是手机上的 GNOME 风格 Shellplasma-mobile:是 KDE Plasma 的手机版gnome-mobile:是 GNOME Shell Mobilesxmo-de-sway:是 Sxmo 桌面环境 + Sway Wayland 合成器
此处笔者选择的 phosh,除了第4个 sxmo-de-sway可能过于简略,其他三个大差不差,按需选择。
homelab-1.png
同时下载最新版本的两个镜像:xxxx-oneplus-fajita-boot.img.xz和 xxxx-oneplus-fajita.img.xz。下载完成后本地解压缩。
2.2 fastboot线刷
接下来就是将系统刷入手机。首先需要在电脑安装fastboot,macOS可直接使用homebrew安装:brew install --cask android-platform-tools.
- fastboot模式:官方的Wiki指引中提到,同时按住
Volume Up + Volume Down + Power,进入Fastboot模式,之后手机usb连接电脑。并通过fastboot devices命令确认已经成功连接。 - fastboot刷机:接下来按照如下命令线刷,先切换到b分区,刷入boot,刷入系统,然后重启。
fastboot --set-active=b
fastboot flash boot xxxx-oneplus-fajita-boot.img
fastboot erase userdata
fastboot -S 200M flash userdata xxxx-oneplus-fajita.img.xz
fastboot erase dtbo
fastboot reboot写入系统镜像时间会长一些,笔者用了3分钟左右,reboot之后就可以移除usb了。重启完成进入系统,初始用户名为user,密码为147147。
 ](http://192.168.5.6:8111/usr/uploads/2026/07/597657187.png)

3. 设置
在能够访问ssh服务器之后,进一步修改相关设置和安装必要的程序,来提升服务器的可用性和易用性。
3.1 联网
启动之后,先处理联网的问题。打开Wifi,连接家里的无线网络。如果想通过ssh在内网中连接手机,开需要开启系统的sshd服务。
打开手机的console APP,根据官方指引中,使用
sudo systemctl start sshd
sudo systemctl enable sshd来启动和自动启动服务。
开启sshd服务之后,在路由器中查找设备的内网ip。以笔者所使用的路由器为例,可以在接入设备中查看所有接入网络设备的IP内网设备,并根据设备MAC地址,绑定静态IP地址。这样在手机重启,或者有新的设备加入网络之后,手机的IP是固定不变的,方便在内网中连接设备。

之后就可以使用 ssh user@192.168.5.6 连接服务器了。
除了连接问题,笔者还发现从PC经内网ping手机服务器的延迟高达40ms,经过一番查阅,是由于默认手机的网络默认设置为节能模式,导致网络连接不稳定,通过iw关闭对应网卡的节能模式,并将手机的性能调整为balanced。
iw dev wlan0 set power_save off
iw dev wlan0 get power_save
sudo mkdir -p /etc/NetworkManager/conf.d
sudo tee /etc/NetworkManager/conf.d/wifi-powersave-off.conf > /dev/null <<'EOF'
[connection]
wifi.powersave = 2
EOF
sudo systemctl restart NetworkManager
iw dev wlan0 get power_save
if command -v powerprofilesctl >/dev/null 2>&1; then
powerprofilesctl list
sudo powerprofilesctl set balanced
powerprofilesctl get
fi也可以考虑其设置为服务,开机自动执行。
3.2 换源
postmarketOS 默认使用国外的Alpine Linux镜像源,导致下载速度很慢。安装nano编辑器,并通过nano修改文件 nano /etc/apk/repositories,题换为清华源。
# https://mirror.postmarketos.org/postmarketos/extra-repos/systemd/v26.06
# https://mirror.postmarketos.org/postmarketos/v26.06
# http://dl-cdn.alpinelinux.org/alpine/v3.24/main
# http://dl-cdn.alpinelinux.org/alpine/v3.24/community
http://mirrors.tuna.tsinghua.edu.cn/postmarketOS/v26.06
http://mirrors.tuna.tsinghua.edu.cn/alpine/v3.24/main
http://mirrors.tuna.tsinghua.edu.cn/alpine/v3.24/community再使用 apk update 的速度飞快。
3.3 定时任务
为保证整个服务器运行的稳定性,还安装cronie启动crontab,能够编辑定时执行的脚本。
# 1. 安装
apk add cronie networkmanager bash
# 2. 写服务脚本
cat > /etc/systemd/system/crond.service <<'EOF'
[Unit]
Description=Cron daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/crond -n -s
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
## 3. 重启
systemctl daemon-reload
systemctl enable --now crond
systemctl status crond3.4 安装docker
后期免不了使用docker来运行一些程序。docker配置过程如下:
# 1. 安装 docker 和 docker compose
sudo apk add docker docker-cli-compose
# 2. 关闭防火墙,否则要手动放行端口
sudo systemctl stop nftables
# 3. 重启docker服务
sudo systemctl restart docker6.1.4 状态价值 TDLearning
123

很棒的